Bash Shell设置默认值

Bash Shell设置默认值,你的脚本依赖于某些常用(如 $USER)或业务特定的环境变量。要想构建一个稳健的 shell 脚本,就得确保这些变量都有合理的默认值。那么该如何确保呢?

解决方案

首次引用 shell 变量时,如果该变量没有值,则使用赋值运算符为其赋值。

cd ${HOME:=/tmp}

讨论

示例中所引用的 $HOME 会返回其当前值,除非它为空或者压根就没设置。对于后两种情况(为空或没有设置),返回 /tmp,该值还会被赋给 $HOME,随后再引用 $HOME 的话,返回的就是这个新值。

我们来看一下实际应用。

$ echo ${HOME:=/tmp}
/home/uid002
$ unset HOME # 这么做通常并非明智之举
$ echo ${HOME:=/tmp}
/tmp
$ echo $HOME
/tmp
$ cd ; pwd
/tmp
$

一旦删除该变量,它就不再具有任何值。然后,用 := 运算符作为变量引用的一部分时,$HOME 被替换成了新值(/tmp)。接下来引用 $HOME 返回的都是这个新值。

记住,赋值运算符有一个重要的例外:不能对位置参数(如 $1$*)赋值。在这种情况下,可以使用 :-(如 ${1:-default}),该表达式只返回值,但不进行赋值。

顺便说一下,注意 ${VAR:=value}${VAR:-value} 在形式上的差异,也许可以帮助你记忆这两种让人抓狂的符号。:= 执行赋值操作,同时返回运算符右侧的值。:- 只做了前者一半的工作:返回值,但不赋值。因此,它的符号也只有等号的一半(一个横杠,而不是两个)。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!