设置shell变量的默认值
时间:2019-04-16 23:59:04 来源:igfitidea点击:
可以使用下面的语法设置默认的shell变量值。
例如,尝试显示一个名为grandslam的未定义变量的值:
[root@rhel6 ~]# echo $grandslam
由于变量grandslam没有定义,所以什么也没显示。
我们可以指定如果$grandslam未设置,则设置其值为 "just do it":
[root@rhel6 ~]# echo ${grandslam=just do it} just do it [root@rhel6 ~]# echo $grandslam just do it
shell脚本中冒号减号:-
是什么意思
我们还可以使用下面的语法在shell变量未设置时提供一个备选值:
echo ${variable:-DefaultValue}
例如:
[root@rhel6 ~]# echo ${hi:-hellowold} hellowold
shell脚本中冒号等号:=
是什么意思
当变量的值为空,我们可以设置shell变量的默认值:
echo ${variable:=DefaultValue}
例如:
[root@rhel6 ~]# echo ${cn:=nihao} nihao
shell中冒号减号和冒号等号的区别
冒号减号:-如果变量没有设置,则使用提供的值代替
冒号等号:=如果变量是空,则使用默认值对变量进行设置
下面的函数die如果在调用时缺少$1参数,则将分配一个默认值:
但是运行时将会报错
die(){ local error=${1:=Undefined error} echo "[root@rhel6 tmp]# ./h.sh ./h.sh: File not found ./h.sh: line 3: : cannot assign in this way: $LINE $error" } die "File not found" die
die(){ local error=${1:-Undefined error} echo "##代码##: $LINE $error" } # 调用die()时有一个参数 die "File not found" # 调用die()时没有参数 die
这是因为,$1是系统临时变量,不能进行赋值。 改成下面即可
##代码##