“${parameter:+word}”的目的和用例是什么?

“${parameter:+word}”的目的和用例是什么?

来自 Bash 手册

${parameter:+word}

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

仅当“parameter”中的目标字符串存在且不为空时,才看起来像是字符串替换。

这种参数扩展的目的和用例是什么?

谢谢。

答案1

您可以将其与标志变量一起使用,例如向命令行添加一些标志:

use_x=1
param_x=foobar
somecmd ${use_x:+-x} ${use_x:+$param_x}

当然, with 部分param_x并不是一个好主意,因为它容易受到分词和通配符的影响。不过,这对于静态标志本身来说应该不是问题,但一般来说,在这里使用数组会更健壮。

要测试变量是否已设置,[ -n "$var" ]工作原理类似,因此${var:+value}.另一方面,${var+value}(没有冒号)对于区分空变量和未设置变量很有用:

unset a
b=
[ "${a+x}" = "x" ] && echo a is set
[ "${b+x}" = "x" ] && echo b is set

相关内容