Bash Shell空值作为默认值

Bash Shell空值作为默认值,你需要设置默认值,但希望空字符串也能作为有效值。你只想在变量不存在时才替换默认值。

${:=} 运算符在两种情况下会使用新值:一种是指定的 shell 变量不存在(或被明确删除);另一种是变量存在,但值为空,就像 HOME=""HOME=$OTHER$OTHER 没有值)这样。

解决方案

shell 能够区分这两种情况,忽略冒号(:)表示只希望在变量不存在时才进行替换。如果写成不带冒号的 ${HOME=/tmp},那么赋值操作仅会在该变量不存在的情况下(从未设置或已明确删除)发生。

讨论

我们再用 $HOME 变量演示一次,但这次不使用冒号。

$ echo ${HOME=/tmp}      # 不会被替换
/home/uid002
$ HOME=""                # 通常并非明智之举
$ echo ${HOME=/tmp}      # 不会被替换

$ unset HOME             # 通常并非明智之举
$ echo ${HOME=/tmp}      # 会被替换
/tmp
$ echo $HOME
/tmp
$

这个示例将 $HOME 设置为空字符串,虽然为空,但毕竟也是有效值,因此 = 运算符并不会替换 $HOME 的内容。但如果删除该变量,则会发生替换。要想允许出现空字符串,使用不带冒号的 = 即可。但大部分时候是使用 :=,因为无论你是否有意,空值基本上没什么用处。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!