文章目录
1、什么是变量的测试与内容置换
我们之前说过,在Shell中,一个变量未定义,和一个变量为空值的输出效果是一样的。
# 先直接输出一个未定义的变量y
[root@Lyl ~]# echo $y
# 再定义变量y为空值,并输出变量y
[root@Lyl ~]# y=""
[root@Lyl ~]# echo $y
[root@Lyl ~]#
其结果都是没有任何显示。
前边在说set
命令的时候说过,执行set -u
命令后,如果一个变量不存在,则会报错。如果变量为空,则会显示空。
# 先直接输出一个未定义的变量x,结果会报错。
[root@Lyl ~]# echo $x
-bash: x: unbound variable
# 再定义一个空值y,结果就显示为空。
[root@Lyl ~]# y=""
[root@Lyl ~]# echo $y
[root@Lyl ~]#
所以通过set -u
可以让我们分清楚Shell中的一个变量是未定义的还是有空值的。
但是人执行命令看提示,是可以区分变量未定义和空值的情况。那如何让Shell程序来判断,一个Shell变量是否存在还是有空值,还是有值。(人肉眼能看到的,不见得程序能识别)
当然我们可以识别提示,并根据提示内容做判断来区分,也是很麻烦的。
Shell觉得我们面对上面的情况会频率很高,所以Shell帮我们准备了判断上述情况的表达式。
我们先来看一个变量的测试与内容置换的例子,如下:
变量置换方式 | 变量y没有设置(未定义) | 变量y为空值 | 变量y设置值 |
---|---|---|---|
x=${y-新值} |
x=新值 |
x为空值 |
x=$y |
说明:
x=${y-新值}
的意思是,通过${y-新值}