Linux 技巧: Bash 测试和比较函数
作者: 来源: 添加日期:2008-5-19 11:25:34
0
在清单 1 的第一个示例中,-gt 操作符对两个字符值之间执行算术比较。在第二个示例中,用 [ ] 的形式比较两个字符串不相等。在最后一个示例中,测试 HOME 变量的值,用
单目操作符 -d 检查它是不是目录。
可以用 -eq、 -ne、-lt、 -le、 -gt 或 -ge 比较算术值,它们分别表示等于、不等于、小于、小于等于、大于、大于等于。
可以分别用操作符 =、 !=、< 和 > 比较字符串是否相等、不相等或者第一个字符串的排序在第二个字符串的前面或后面。单目操作符 -z 测试 null 字符串,如果字符串非空 -n
返回 True(或者根本没有操作符)。
说明:shell 也用 < 和 > 操作符进行重定向,所以必须用 \< 或 \> 加以转义。清单 2 显示了字符串测试的更多示例。检查它们是否如您预期的一样。
清单 2. 一些字符串测试 [ian@pinguino ~]$ test "abc" = "def" ;echo $? 1 [ian@pinguino ~]$ [ "abc" != "def" ];echo $? 0 [ian@pinguino ~]$ [ "abc" \< "def" ];echo $? 0 [ian@pinguino ~]$ [ "abc" \> "def" ];echo $? 1 [ian@pinguino ~]$ [ "abc" \<"abc" ];echo $? 1 [ian@pinguino ~]$ [ "abc" \> "abc" ];echo $? 1
表 1 显示了一些更常见的文件测试。如果被测试的文件存在,而且有指定的特征,则结果为 True。
表 1. 一些常见的文件测试 操作符 特征 -d 目录 -e 存在(也可以用 -a) -f 普通文件 -h 符号连接(也可以用 -L) -p 命名管道 -r 可读 -s 非空 -S 套接字 -w 可写 -N 从上次读取之后已经做过修改
除了上面的单目测试,还可以使用表 2 所示的双目操作符比较两个文件:
表 2. 测试一对文件 操作符 为 True 的情况 -nt 测试 file1 是否比 file2 更新。修改日期将用于这次和下次比较。 -ot 测试 file1 是否比 file2 旧。 |