Pregunta Bash: opcionalmente pasando argumentos a un comando


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

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

En el ejemplo, si title se da no nulo, se agregará un argumento a curl.

Esto no funciona correctamente si title contiene espacios También no pude rodear $(...) con citas, porque si title es nulo, producirá un argumento vacío inesperado para curl.

¿Qué debo hacer para que funcione como lo espero?


13


origen




Respuestas:


He resuelto el problema con el bash ${var:+...} sintaxis, (referencia)

La secuencia de comandos ahora cambia a

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

que funciona a la perfección

Ver también:


14