### --- 例子一: ~~~ 删除变量 y [root@localhost ~]# unset y ~~~ 进行测试 [root@localhost ~]# x=${y-new}
~~~ 因为变量 y 不存在,所以 x=new [root@localhost ~]# echo $x new ~~~ 但是变量 y 还是不存在的和表 11-12 对比下,这个表是不是可以看懂了。 ~~~ 这是变量 y 不存在的情况,那如果变量 y 的值是空呢? [root@localhost ~]# echo $y
~~~ 给变量 y 赋值为空 [root@localhost ~]# y="" ~~~ # 进行测试 [root@localhost ~]# x=${y-new}
~~~ 变量 x 和变量 y 值都是空 ~~~ 那如果变量 y 有值呢? [root@localhost ~]# echo $x [root@localhost ~]# echo $y ~~~ 给变量 y 赋值 [root@localhost ~]# y=old
~~~ # 进行测试 ~~~ 变量 x 和变量 y 的值都是 old [root@localhost ~]# x=${y-new} [root@localhost ~]# echo $x old [root@localhost ~]# echo $y old
二、 例子2
### --- 例子2 ~~~ 那如果大括号内是“=”号,又该是什么情况呢?先测试下变量 y 没有设置的情况: ~~~ 删除变量 y [root@localhost ~]# unset y ~~~ # 进行测试 [root@localhost ~]# x=${y:=new}
~~~ 变量 x 和变量 y 的值都是 new ~~~ 一旦使用“=”号,那么变量 y 和变量 x 都会同时进行处理, ~~~ 而不像例子 1 中只改变变量 x 的值。 ~~~ 那如果变量 y 为空又是什么情况呢? [root@localhost ~]# echo $x new [root@localhost ~]# echo $y new
~~~ 设定变量 y 为空 [root@localhost ~]# y="" ~~~ # 进程测试 [root@localhost ~]# x=${y:=new}
### --- 变量 x 和变量 y 的值都是 new ~~~ 一旦在大括号中使用“:”,那么变量 y 为空或者不设定,处理方式都是一样的了。 ~~~ 那如果 y 已经赋值了,又是什么情况: [root@localhost ~]# echo $x new [root@localhost ~]# echo $y new
~~~ 给 y 赋值 [root@localhost ~]# y=old ~~~ # 进行测试 [root@localhost ~]# x=${y:=new}
~~~ 原来变量 x 和变量 y 的值都是 [root@localhost ~]# echo $x old [root@localhost ~]# echo $y old
三、例子 3:
### --- 例子三: ~~~ # 再测试下大括号中是“?”的情况吧: ~~~ 删除变量 y [root@localhost ~]# unset y
~~~ 会把值“new”输出到屏幕上 ~~~ 那如果变量 y 已经赋值了呢: [root@localhost ~]# x=${y?new} -bash: y: new
~~~ 给变量 y 赋值 [root@localhost ~]# y=old ~~~ # 进行测试 [root@localhost ~]# x=${y?new}
~~~ 变量 x 和变量 y 的值都是 old [root@localhost ~]# echo $x old [root@localhost ~]# echo $y old