shell中变量的默认值

我们在写脚本时候经常需要用到变量默认值,一般会这样写

if [ ! $var ]; then
  $val="defalut"
fi

这种写法在少量变量需要判断时候没关系,多了整个代码看起来就很累人。

另外一种办法一行代码解决这个问题

1.当VAR为null或空字符串,将返回默认值,但是不改变VAR的具体值

VAR=${VAR:-default}

2.当VAR为null或空字符串,将返回默认值,并且改变VAR的值

VAR=${VAR:=default}

3.当VAR没有定义时,或定义值为空,将在终端报错后退出,用来检查是否定义以及是否为空
VAR=${VAR:?default}

4.当VAR定义并且不为空,用default替换VAR的值,否则什么也不做,与${VAR:-default}的用途相反
VAR=${VAR:+value}