3 Shell脚本的条件测试与比较
3.1 Shell脚本的条件测试
3.1.1 条件测试方法
条件测试:bash的条件结构和流程控制结构中进行的各种测试,根据测试结果执行不同的操作。执行条件测试表达式后通常返回“真”或“假”,就像执行命令后的返回值为0表真,非0位假。
3.1.2 常见的语法形式
- test <测试表达式>
- [ <测试表达式> ] 同test等价,下面我们只使用该语法格式;
- [[ <测试表达式> ]]
- ((<测试表达式>))
3.1.3 [](中括号)条件测试语句
- []条件测试的语法格式为:[ <测试表达式> ]
- 测试语句:[ -f /home/auv/test.txt ] && echo 1 || echo 0
- 如果/home/auv/test.txt文件存在,则输出1,否则输出0.此处 &&表示与,||表示或。
3.2 文件测试表达式
在编程时需要处理一个对象,首先应对其进行测试,只有确定它符合要求才进行下一步,测试对象可以是文件、字符串、数字等。
3.2.1 常用文件测试操作符
- -d directory 文件存在且为目录则为真
- -f file 文件存在且为普通文件则为真
- -e exist 文件存在则为真(不辨别目录还是文件)
- -r read 文件存在且可读则为真
- -s size 文件存在且大小不为0则为真
- -w write 文件存在且可写则为真
- -x executable 文件存在且可执行则为真
- -L link 文件存在且为链接文件则为真
- f1 -nt f2 newer than 文件f1比文件f2新则为真
- f1 -ot f2 older than 文件f1比文件f2旧则为真
- 测试语句1:[ -f /home/auv/test.txt ] && echo 1 || echo 0
- 测试语句2:[ /home/auv/f1.txt -nt /home/auv/f2.txt ] && echo 1 || echo 0
3.3 字符串测试表达式
字符串测试操作符的作用包括:比较两个字符串是否相同、测试字符串长度是否为0、字符串是否为NULL等
3.3.1 常用字符串测试操作符
- -n "字符串" 字符创长度非0,则为真
- -z "字符串" 字符串长度为0,则为真
- "串1" = "串2" 若字符串1等于串2,则为真
- "串1" != "串2" 若字符串1不等于串2,则为真
- 测试语句:[ -n "abc" ] && echo 1 || echo 0
- 测试语句:[ "abc" = "abd" ] && echo 1 || echo 0
3.4 整数二元比较操作符
- -eq equal 相等 =
- -ne not equal 不相等 !=
- -gt greater than 大于 >
- -ge greater equal 大于等于 >=
- -lt less than 小于 <
- -le less equal 小于等于 <=
- 测试语句:[ 2 -gt 1 ] && echo 1 || echo 0
3.5 逻辑操作符
-a and &&
-o or ||
! not !
测试语句:[ -f /etc/hosts -a /etc/services ] && echo 1 || echo 0
2018-06-22 07:48:10 雷小贱