我正在查看在:=
之间使用${ }
的几个bash脚本。例如,模式如下所示:
export VAR=${VAR:=value}
这是做什么的? 如果 VAR 不存在,是否将值分配给 VAR ?
答案 0 :(得分:5)
$ {参数:=字}
如果参数未设置或为null,则将字的扩展分配给参数。然后替换参数的值。不能以这种方式分配位置参数和特殊参数。
因此它使用其值导出VAR值,或者如果未设置/ null,则使用文字value
导出。
答案 1 :(得分:4)
从手册页:
${parameter:=word} Assign Default Values. If parameter is unset or null, the expansion of word is assigned to parameter. The value of param‐ eter is then substituted. Positional parameters and special parameters may not be assigned to in this way.
换句话说,它基本上允许您为变量指定默认值。如果变量是unset / null,那么它将被设置为该值,并且该值也将用作扩展。
答案 2 :(得分:2)
这是为名称指定默认值的一种方法。
${foo:=bar}
如果设置,将扩展为$foo
。否则,它会将值"bar"
分配给名称foo
,并将整个表达式扩展为该值。在现实生活中,我从来没有真正看到过任何好的例子。我见过这样用过:
: ${foo:=bar}
通过执行分配工作,但丢弃其输出。我不认为这是一个很好的例子,因为你可以轻松地写
foo=${foo:-bar}
我认为这对大多数读者来说更为明显。