bash 中 opts=${1:+--host $1} 是什么意思?

LuoLeKe

在 bash 脚本中,我偶然发现了这段代码:

opts=${1:+--host $1}
/path/somecmd $opts somesubcmd

通过测试,我发现它可以$opts扩展到--host $1任何东西$1
我想知道这个语法的目的是什么。为什么不简单地使用opts="--host $1"

这是将选项传递给命令的特定方式吗?

三聚氰胺

正如bash 手册所说

${parameter:+word}

如果参数为空或未设置,则不替换任何内容,否则替换单词的扩展

当 bash 手册说“参数”时,它的意思是“变量”。当它说“null”时,它的意思是“空字符串”。

换句话说,${foo:+bar}就像bar, 但前提$foo是不为空。

在你的情况下,

${1:+--host $1}

它检查$1如果$1未设置或为空,则整个构造将扩展为空。

否则它会扩展为--host $1,正如您所观察到的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章