Bash:可选择将参数传递给命令

Bash:可选择将参数传递给命令

我正在尝试向命令调用添加依赖于另一个变量的参数。请查看 shell 脚本代码:

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

在示例中,如果title给定的不为空,则会向中添加一个参数curl

如果包含空格,则此方法无法正常工作title。另外,我无法$(...)用引号括起来,因为如果title为空,它将产生一个意外的空参数curl

我应该怎么做才能让它按预期工作。

答案1

我已经解决了 bash 语法的问题${var:+...},(参考)。

脚本现在更改为

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

效果非常好。

另请参阅:

相关内容