设置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是系统临时变量,不能进行赋值。 改成下面即可

##代码##