Двойные кавычки в 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 

  • Долларовая интерполяция знаков внутри кавычек в bash
  • Регулярное выражение с использованием \\ vs с использованием \
  • Как напечатать «$» в документе здесь
  • Есть ли способ получить * фактические * (неинтерпретированные) аргументы оболочки в функции или скрипте?
  • Использование ссылки на строковую переменную bash в sed
  • bash выполнить команду чтения из файла
  • Вложенные строки в команде bash
  • Почему мы дважды цитируем оценку знака доллара в Bash?
  • 2 Solutions collect form web for “Двойные кавычки в bash”

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

    Linux и Unix - лучшая ОС в мире.