Eu resolvi o problema com a sintaxe bash ${var:+...}
, ( referência ).
O script agora muda para
curl \
${title:+ --data-urlencode "title=${title}"} \
http://example.com
que funciona perfeitamente.
Veja também:
Estou tentando adicionar argumentos a uma chamada de comando depende de outra variável. Por favor, olhe o código de script de shell:
curl \
$([ -z "${title}" ] || echo --data-urlencode title=${title}) \
http://example.com
No exemplo, se title
for dado não como nulo, um argumento será adicionado a curl
.
Isso não funciona corretamente se title
contiver espaços. Também não consegui envolver $(...)
com as cotações, porque se title
for nulo, ele gerará um argumento vazio inesperado para curl
.
O que devo fazer para que funcione como esperado.
Eu resolvi o problema com a sintaxe bash ${var:+...}
, ( referência ).
O script agora muda para
curl \
${title:+ --data-urlencode "title=${title}"} \
http://example.com
que funciona perfeitamente.
Veja também: