[devel] Передача аргумента с пробелом внутри

Dmitry V. Levin ldv на altlinux.org
Чт Июл 1 22:31:14 UTC 2010


On Mon, Jun 23, 2008 at 02:56:33AM +0400, Dmitry V. Levin wrote:
> On Mon, Jun 23, 2008 at 02:44:03AM +0400, Vitaly Lipatov wrote:
> > On 23 июня 2008, Dmitry V. Levin wrote:
> > > On Mon, Jun 23, 2008 at 02:11:45AM +0400, Vitaly Lipatov wrote:
> > > > Пытаюсь передать --define='_source_payload w9.gzdio' в
> > > > rpmbuild и по дороге аргумент разрывается на две части по
> > > > пробелу. Пример скрипта приложен
> > >
> > > Вот что там происходит, на более простом примере:
> > >
> > > $ rpmbuild -bs "--define='_source_payload w9.gzdio' --nodeps"
> > > /dev/null ошибка: Недопустимое имя (%define) макроса %
> > > ошибка: Недопустимое имя (%define) макроса %
> > > ошибка: Не обычный файл: /dev/null.
> > Да. Осталось понять, возможно ли передать в функцию shell 
> > параметры в сохранности, или нет.
> 
> Конечно, но сперва надо уловить, как работает квотирование в shell;
> см. напр. bash(1) про QUOTING.
> В /bin/shell-quote есть готовый инструмент для более сложных случаев.

Наглядный пример реализации с использованием shell-quote:
$ gear-rpm -bp --define='_source_payload w9.gzdio'


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100702/a3fe9753/attachment.bin>


Подробная информация о списке рассылки Devel