Bash: опционально передавая аргументы команде


21

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

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

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

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

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

Ответы:


23

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

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

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

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

Также см:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.