Intereting Posts

Двойные кавычки в bash

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

Взгляните на содержимое моего файла.

#!/bin/bash echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config & ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config & 

Часть эха печатает именно ту команду, в которой я нуждаюсь, но когда я приступаю к ее выполнению (следующая строка), я использую ее.

Как я могу исправить это?

Благодаря!

Вот как мне нужно это назвать:

 ./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config 

Результат эха:

 ./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config 

Результат вызова:

 demos: error: unrecognized arguments: parameter 

Копирование и вставка результатов эха:

 INFO:yowsup.demos.sendclient.layer:Message sent 

Вам нужно избежать кавычек в команде echo чтобы увидеть их на выходе, но вы не должны избегать их в действительной команде:

 #!/bin/bash echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config & ./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config & 

Кавычки используются в фактической команде, чтобы предотвратить разделение $2 – которое содержит несколько слов.

Я (почти) всегда цитирую все, чтобы «эхо», поэтому я бы сделал следующее:

 #!/bin/bash echo "./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &" ./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config & 

Разница с решением @muru заключается в том, что исходная команда echo запускается «в фоновом режиме» – здесь она вторит экрану на переднем плане, но запускается в качестве фоновой команды. (@ muru также не показывает амперсанд в конце команды.)