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

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

  • bash: невозможно установить переменную в сплошную строку
  • Как предотвратить перемещение символов в переменной среды?
  • Регулярное выражение с использованием \\ vs с использованием \
  • Использование ссылки на строковую переменную bash в sed
  • Есть ли способ получить * фактические * (неинтерпретированные) аргументы оболочки в функции или скрипте?
  • Как скобки интерпретируются в командной строке?
  • 7z получение события не найдена ошибка в командной строке
  • Не удалось получить команду для работы с bash -c
  • Как вы взаимодействуете с файлом с именем «!!»?
  • Почему мы дважды цитируем оценку знака доллара в Bash?
  • cp не работает в скрипте, но работает в терминале
  • Linux и Unix - лучшая ОС в мире.