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: