2015-05-05 2 views
0

Итак, у меня есть скрипт bash, который генерирует строку команд, которые я хочу запустить. Вывод выглядит примерноbash send string аргумент как несколько аргументов

$ program "command1 command2 ... commandN"

Но программа интерпретации (как это должно быть) «command1 Command2 ... commandN» в качестве одного из аргументов.

Есть ли возможность пропустить строку в аргумент в виде разделенных аргументов, чтобы программа интерпретировала каждую команду как отдельный аргумент?

$ program command1 command2 ... commandN

Спасибо за любую помощь.

+0

Вам может понадобиться, чтобы избежать пробелов с помощью Edit: не forwardslash – Treesrule14

+0

не повезло с этим. – trev9065

+0

Можете ли вы опубликовать свой код сценария bash? – Treesrule14

ответ

3

Я сделал это, реализуя свой сценарий: Идея заключается в том, чтобы использовать "ABC" в качестве аргумента для cat

$ echo a > a 
$ echo b > b 
$ echo c > c 
$ args="a b c" 

Попытка "ABC", как "один аргумент"

$ cat $args 
cat: a b c: No such file or directory 

Временное решение для разделения аргументов:

$ cat $(echo $args) 
a 
b 
c 

Надеюсь, что это поможет у

(Таким образом, вы должны запустить program $(echo "command1 command2 ... commandN")

+2

Это небезопасно для аргументов, которые сами могут содержать пробелы и/или которые содержат метасимволы оболочки. Правильный способ сделать это - использовать массив или аргументы, а не строку, см. [Bash FAQ 0050] (http://mywiki.wooledge.org/BashFAQ/050) для более подробной информации. –