在 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] 删除。
我来说两句