Bash: opcionalmente pasar argumentos a un comando

19

Estoy tratando de agregar argumentos a una llamada de comando depende de otra variable. Mire el código de script de shell:

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

En el ejemplo, si titlese proporciona no nulo, se agregará un argumento a curl.

Esto no funciona correctamente si titlecontiene espacios. Además, no pude rodearme $(...)de citas, porque si titlees nulo, generará un argumento vacío inesperado curl.

¿Qué debo hacer para que funcione como se espera?

Shou Ya
fuente

Respuestas: