变量测试主要在Shell中有,其它绝大多数语言是没有这个概念的,通用度不高。而且变量测试比较复杂,在实际写脚本的过程中完全可以用其它方式来取代变量测试。
变量测试格式复杂,语法简单,适合于脚本程序的优化。(其实就是把判断语句和赋值语句简化了)
变量测试表
这个表也比较复杂,解释下第一行变量测试,如果写:
x=${y-4}
那么如果y不存在,那么x=4;如果y为空值,那么x为空值;如果y有值,那么x被赋y的值。
第一行变量测试往往具有的意义是,在一些比较复杂的脚本中,假设我们不能直接检测变量y是否存在或有值(或者直接检测y会让脚本变得非常复杂),那么就可以用该行变量测试的方式,通过x的值来推断出y是否存在或有值。(可以看到变量测试表的其它行并不能保证y的三种状态对应的x的三种状态是不同的,它们都会有各自应用的场合)
测试一下第一行:
[root@bogon ~]# unset y
[root@bogon ~]# x=${y-4}
[root@bogon ~]# echo $x
4
[root@bogon ~]# y=""
[root@bogon ~]# x=${y-4}
[root@bogon ~]# echo $x
[root@bogon ~]# y=3
[root@bogon ~]# x=${y-4}
[root@bogon ~]# echo $x
3
测试一下第四行:
[root@bogon ~]# unset y
[root@bogon ~]# x=${y:+4}
[root@bogon ~]# echo $x
[root@bogon ~]# y=""
[root@bogon ~]# x=${y:+4}
[root@bogon ~]# echo $x
[root@bogon ~]# y=3
[root@bogon ~]# x=${y:+4}
[root@bogon ~]# echo $x
4
这个表不用背,能读懂就行了。在一些Linux自带的脚本中可能有不少变量测试,读到了来查表就行。