问题
本案例要求参考PPT上的示例,分别练习以下条件测试操作:
识别文件/目录的状态
比较整数值的大小
字符串匹配
多个条件/操作的逻辑组合
步骤
实现此案例需要按照如下步骤进行。
步骤一:条件测试的基本用法
1)一般用法
使用“test 表达式”或者[ 表达式 ]都可以,表达式两边至少要留一个空格。比如,判断变量X的值是否大于5,操作如下:
[root@svr5 ~]# X=10
[root@svr5 ~]# test $X -gt 5
上述test测试也可改用 [ ]方式(推荐用这种方式):
[root@svr5 ~]# [ $X -gt 5 ]
[root@svr5 ~]#
条件测试操作本身不显示出任何信息。测试的条件是否成立主要体现在命令执行后的返回状态(即 ? ) , 所 以 可 以 在 测 试 后 查 看 变 量 ?),所以可以在测试后查看变量 ?),所以可以在测试后查看变量?的值来做出判断,或者结合&&、||等逻辑操作显示出结果(或作其他操作) 。
比如,分别测试变量X的值(10)是否大于5、是否大于20:
[root@svr5 ~]# [ $X -gt 5 ]
[root@svr5 ~]# echo $?
0 //返回值为0,说明测试的条件成立
[root@svr5 ~]# [ $X -gt 20 ]
[root@svr5 ~]# echo $?
1
//返回值不为0,说明测试的条件不成立
或者,结合逻辑分隔更直接的给出结果:
[root@svr5 ~]# [ $X -gt 5 ] && echo "YES" || echo "NO"
YES //因为10>5,所以 YES
[root@svr5 ~]# [ $X -gt 20 ] && echo "YES" || echo "NO"
NO //因为 10<20,所以 NO
2)扩展用法
test本身是一个命令,所以往宽了理解,任何命令都可以用作测试,因为在Shell环境中每个命令执行完后都会有返回状态$?。比如,若要检查一个软件包是否安装,正常可以执行“rpm -q 软件名”查询,人工可以直接看显示