15

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

curl \
  $([ -z "${title}" ] || echo --data-urlencode title=${title}) \
  http://example.com

В этом примере, если title задан не нулевым, в curl будет добавлен аргумент.

Это не работает правильно, если title содержит пробелы. Также я не смог заключить в кавычки $(...) , потому что если title равен нулю, это приведет к неожиданному пустому аргументу для curl .

Что я должен сделать, чтобы все заработало как надо.

1 ответ1

15

Я решил проблему с синтаксисом bash ${var:+...} , (ссылка).

Сценарий теперь изменяется на

curl \
    ${title:+ --data-urlencode "title=${title}"} \
    http://example.com

который работает отлично.

Также см:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .