很多时候在我们写shell脚本的过程中,变量值为空的时脚本会报错,如果通过判断去排除变量的值为空会相对麻烦,所以我们通常会为变量设置一个默认值,避免在脚本运行的过程中报错,这就是变量的初始值赋值。
经常使用的初始值赋值的方法有以下两种,都能对一个变量赋予一个初始值,但是它们也有区别:
1.$
{var:-初始值}
这种方法赋予变量的初始值,只是临时调用赋予的值,实际上变量var的值并不改变,仍然为空;
实例:
[root@redhat_192.168.0.12 20:10:15 ~]#a=${b:-1}
[root@redhat_192.168.0.12 20:10:20 ~]#echo $a
1
[root@redhat_192.168.0.12 20:10:23 ~]#echo $b
------>空值
2.$
{var:=初始值}
这种方法赋予的变量的初始值,不仅能够调用赋予的值,同时还给var赋予一个值,这是候var的值发生改变,不为空
[root@redhat_192.168.0.12 20:10:27 ~]#a=${b:=1}
[root@redhat_192.168.0.12 20:11:15 ~]#echo $a
1
[root@redhat_192.168.0.12 20:11:18 ~]#echo $b
1 ----->b的值不为空,与赋予的初始值相等
补充:
shell 脚本 ${1:-‘false’}的含义:
value = ${1:-‘false’}
$1 :代表传入的第一个参数。
如果$1存在并且不为空那么value=$1,否则就是a=false;
:-为三元运算。
$0:代表执行脚本的名字。
$2,$3等等代表一次传入的参数。
$#代表参数个数。
$$ 代表当前脚本的运行进程ID(PID)
$? 代表执行完上一个指令的执行结果。