SHELL编程-条件测试
1. 基本语法
testcondition
或
[condition]
使用括号方式时,条件与括号之间要加空格。
2.测试文件状态
例:测试文件 scores.txe 是否可执行。[root@localhost ~]# [ -x scores.txt ]
[root@localhost ~]# echo $?
1
条件测试可以使用以下条件表达式:
-d目录
-f文本文件
-L符号链接
-s文件非空
-r可读
-w可写
-x可执行
-u 文件有suid位设置3.字符串测试
字符串测试是条件判断中最重要的部分,
例:测试两个字符是否相等。退出状态变量$?,0表示成功,1表示失败。
if 命令就是使用该值做判断。[root@localhost ~]# [ "aa" = "bb" ]
[root@localhost ~]# echo $?
1
if [ -x scores.txt ]; then echo 11111; fi;
字符串测试可以使用以下条件表达式:
=两字符串相等。
!=两字符串不等。
-z空串。
-n 非空串。4.数字测试
例:测试第一个数字小于第二个数字。[root@localhost ~]# [ "10" -lt "99" ]
[root@localhost ~]# echo $?
0
数字测试可以使用以下条件表达式:
-eq相等。
-ne不等
-gt大于。
-ge大于或等于。
-lt小于。
-le小于或等于。
5.expr数字运算
加法运算:expr10+10
减法运算:expr20-10
加法运算:expr10/5
乘法运算:expr10\*5
如果是非数字参加运算会报错误,利用此点可以用来测试数字格式。root@localhost opt]# if expr a + 100; then echo aaaa; else echo bbbb; fi;
expr: non-numeric argument
bbbb
6. 两个以上的条件之间的逻辑关系
[root@localhost opt]# [ -w results.txt -a -w scores.txt ]
[root@localhost opt]# echo $?
0
-a 逻辑与,两个条件同时为0,结果为0。-o 逻辑或,只要一个条件为0,结果为0。