The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"как передать строку с пробелами из переменной в команду"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"как передать строку с пробелами из переменной в команду"  
Сообщение от ukpyr (ok) on 03-Фев-09, 22:41 
как передать строку с пробелами из переменной в команду без кавычек ?

FILES_IN="file1 file2 file3 file4"

command $FILES_IN

программа ругается на наличие кавычек.
при присваивании FILES_IN просто списка без кавычек ругается уже строка присваивания.

может можно использовать другой разделитель (напр. запятую) и как-то заменить запятые пробелами ?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "как передать строку с пробелами из переменной в команду"  
Сообщение от vic (??) on 03-Фев-09, 23:17 
>как передать строку с пробелами из переменной в команду без кавычек ?
>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"
это уже запуск с одним аргументом

>программа ругается на наличие кавычек.

как именно ругается? уверены что на кавычки ругается?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "как передать строку с пробелами из переменной в команду"  
Сообщение от ukpyr (ok) on 03-Фев-09, 23:51 
>как именно ругается? уверены что на кавычки ругается?

забыл написать что используется 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-е нет средств работы со списками.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "как передать строку с пробелами из переменной в команду"  
Сообщение от vic (??) on 04-Фев-09, 00:59 
>>как именно ругается? уверены что на кавычки ругается?
>
>забыл написать что используется zsh под win.

больше так не делайте, по умолчанию рассматривается обычно bash, а в нем все несколько иначе.

>так вот получается что параметр подставляется как есть, с кавычками :
>command "file1 file2 file3"
>и команда (xgettext) воспринимает это как 1 параметр и ругается на отсутствие
>файла (может, это специфика Win-билда).

Это специфика zsh

измените это поведение указав
setopt shwordsplit
или почитайте доку на zsh (полно в инете и на этом сайте) и сделайте более правильно.
(я не могу сказать как именно т.к. юзаю либо bash, либо sh, изредка ksh)

>выкрутился пока так (поменял разделитель на запятую, а в команде заменяю запятые
>на пробелы sed-ом) :

изврат честно слово, почему не почитать доку?

>вообще странно что в shell-е нет средств работы со списками.

есть. тем более в zsh, даже мощнее чем в bash. Опять же читайте документацию.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "как-так"  
Сообщение от Andrey Mitrofanov on 04-Фев-09, 12:21 
>>забыл написать что используется zsh под win.
>больше так не делайте, по умолчанию рассматривается обычно bash, а в нем
>все несколько иначе.

:)
"Больше так не делайте, по умолчанию предполагается уних-подобная свободная ОС, а в $друг_их_ ОС от mS -- просто **всё** не как у людей."

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "как передать строку с пробелами из переменной в команду"  
Сообщение от ukpyr (ok) on 04-Фев-09, 12:27 
>измените это поведение указав
>setopt shwordsplit

спасибо, помогло.
потом вспомнил что видел это в мануале zsh несколько лет назад. эхх, память...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру