как передать строку с пробелами из переменной в команду без кавычек ?FILES_IN="file1 file2 file3 file4"
command $FILES_IN
программа ругается на наличие кавычек.
при присваивании FILES_IN просто списка без кавычек ругается уже строка присваивания.может можно использовать другой разделитель (напр. запятую) и как-то заменить запятые пробелами ?
>как передать строку с пробелами из переменной в команду без кавычек ?
>FILES_IN="file1 file2 file3 file4"В таком виде внутри в переменной FILES_IN строка без кавычек, кавычки здесь только для корректной работы самой оболочки
>command $FILES_IN
это соответствует:
command file1 file2 file3 file4
запуск с 4 аргументами.если необходимо передать строку 'file1 file2 file3 file4' как один аргумент, то следует делать так:
FILES_IN="file1 file2 file3 file4"
command "$FILES_IN"
это уже запуск с одним аргументом>программа ругается на наличие кавычек.
как именно ругается? уверены что на кавычки ругается?
>как именно ругается? уверены что на кавычки ругается?забыл написать что используется zsh под win.
так вот получается что параметр подставляется как есть, с кавычками :
command "file1 file2 file3"
и команда (xgettext) воспринимает это как 1 параметр и ругается на отсутствие файла (может, это специфика Win-билда).выкрутился пока так (поменял разделитель на запятую, а в команде заменяю запятые на пробелы sed-ом) :
FILES_IN=ul_snd.py,ul_snd_gui.py,ul_snd_gui.py,ul_cfg.py,ul_snd_cfg.py,ul_tran.py
xgettext -o $DOMAIN_NAME.pot -p $LOCALE_DIR -L $FILES_LANG --from-code=$FILES_ENC `echo $FILES_IN|sed 's/,/ /g'`
вообще странно что в shell-е нет средств работы со списками.
>>как именно ругается? уверены что на кавычки ругается?
>
>забыл написать что используется zsh под win.больше так не делайте, по умолчанию рассматривается обычно bash, а в нем все несколько иначе.
>так вот получается что параметр подставляется как есть, с кавычками :
>command "file1 file2 file3"
>и команда (xgettext) воспринимает это как 1 параметр и ругается на отсутствие
>файла (может, это специфика Win-билда).Это специфика zsh
измените это поведение указав
setopt shwordsplit
или почитайте доку на zsh (полно в инете и на этом сайте) и сделайте более правильно.
(я не могу сказать как именно т.к. юзаю либо bash, либо sh, изредка ksh)>выкрутился пока так (поменял разделитель на запятую, а в команде заменяю запятые
>на пробелы sed-ом) :изврат честно слово, почему не почитать доку?
>вообще странно что в shell-е нет средств работы со списками.
есть. тем более в zsh, даже мощнее чем в bash. Опять же читайте документацию.
>>забыл написать что используется zsh под win.
>больше так не делайте, по умолчанию рассматривается обычно bash, а в нем
>все несколько иначе.:)
"Больше так не делайте, по умолчанию предполагается уних-подобная свободная ОС, а в $друг_их_ ОС от mS -- просто **всё** не как у людей."
>измените это поведение указав
>setopt shwordsplitспасибо, помогло.
потом вспомнил что видел это в мануале zsh несколько лет назад. эхх, память...