-
1、测试变量是否已设置值或被初始化。如果变量未被初始化,则返回 value。
-
命令格式如下:
var=${var:-value} var=${var-value} -
例子:测试变量是否被初始化,如果未被初始化,在返回一个默认的值。
# 变量 name 未设初值则返回默认值 [root@localhost ~]# echo ${name:-zhangsan} zhangsan # 可以看出,虽然返回了默认值,但是变量 name 并未赋值 [root@localhost ~]# echo ${name:-lisi} lisi # 为变量 name 赋值 [root@localhost ~]# name=wangwu # 因为变量 name 已经赋值,所以返回变量的值 [root@localhost ~]# echo ${name:-zhangsan} wangwu # 清除变量 name [root@localhost ~]# unset name # 变量那么未赋初值,返回默认值 [root@localhost ~]# echo ${name:-zhangsan} zhangsan
-
-
2、测试变量是否已设置值或被初始化。如果变量未被初始化,则使用另一个设定的值。与上面命令不同之处在于,将默认值赋值给变量。
-
命令格式如下:
var=${var:=value} -
例子:测试变量是否被初始化,如果未被初始化,在返回一个默认的值并将默认值赋值给变量。
# 变量 id 未被赋值,返回默认值并且将值赋给变量 id [root@localhost ~]# echo ${id:=1001} 1001 # 因为变量 id 已经赋值 1001,所以直接返回 [root@localhost ~]# echo ${id:=1002} 1001 # 清除变量 id [root@localhost ~]# unset id # 变量 id 未赋值,返回默认值 1002 并赋值给变量 id [root@localhost ~]# echo ${id:=1002} 1002 # 显示变量 id 的值, [root@localhost ~]# echo $id 1002 # 因为变量 id 已经赋值,所以直接返回已有的值 [root@localhost ~]# echo ${id:=1003} 1002
-
-
3、测试变量是否已设置值或被初始化。如果变量未被初始化,则返回一个空串。如果已设置初始值,则将新值返回但并不赋值给变量。
-
命令格式如下:
var=${var:+value} -
例子:测试变量是否被初始化,如果未被初始化,在返回一个空串。否则,返回新值但不会将新值赋值给变量。
# 变量 price 未被赋初值,返回空串 [root@localhost ~]# echo ${price:+100} # 如果变量 price 未赋值,将新值 200 赋值给变量 price [root@localhost ~]# price=${price:-200} # 打印变量的值,为 200 [root@localhost ~]# echo $price 200 # 如果变量已经赋值,则返回新值,但是并不会将新值赋给变量 price [root@localhost ~]# echo ${price:+100} 100 # 打印变量 price,变量的值还是旧值 200 [root@localhost ~]# echo $price 200
-
- 在声明变量并赋值后,使用
readonly命令修饰,变量就成了只读变量,在整个生命周期内不能修改了。-
例子:将变量声明为只读变量。
# 声明变量并赋值 [root@localhost ~]# name=zhangsan # 将变量设置成只读变量 [root@localhost ~]# readonly name # 打印变量的值 [root@localhost ~]# echo $name zhangsan # 为变量重新赋值,提示为只读不能修改 [root@localhost ~]# name=lisi -bash: name: readonly variable # 变量声明时设置为只读 [root@localhost ~]# readonly id=1001 [root@localhost ~]# echo $id 1001 # 为变量重新赋值,提示为只读变量 [root@localhost ~]# id=1002 -bash: id: readonly variable
-