test命令可以用于字符串、数字、文件状态等内容的测试。
文件状态:
指的是对文件的权限、有无、属性、类型等内容进行判断。与其他语言不同的是,test命令的测试结果,返回0时表示测试成功。返回1时表示测试失败。
数值比较:
指的是比较两个数值的大小或相等关系,相当于c语言中的比较运算符。shell程序中的数值测试有下面两种形式。
1、test命令和相应的参数可以对两个数值的关系进行测试,使用方法如下所示。
test 第一个操作数 数值比较符 第二个操作数
2、用中括号代替test命令。这种方法和test命令的原理相同,使用方法如下所示。
[ 第一个操作数 数值比较符 第二个操作数 ]
逻辑比较:
指的是将多个条件进行逻辑运算,常用作循环语句或判断语句的条件。shell程序中有下面三种逻辑测试。
-a:逻辑与,操作符两边均为真时结果为真,否则为结果为假。
-o:逻辑或,操作符两边至少一个为真时,结果为真,否则为假。
! :逻辑否,只有条件为假时,返回结果为真。
字符串比较:
指的是比较两个字符串是否相等,或者判断一个字符串是否为空。这种判断常用来测试用户输入是否符合程序的要求。字符串测试有下面4中常用的方法。
test字符串比较符 字符串
test 字符串1 字符串比较符 字符串2
[ 字符串比较符 字符串 ]
[ 字符串1 字符串比较符 字符串2 ]
字符串比较符有如下所示的4种。
=:测试两个字符串是否相等。
!=:测试两个字符串是否不相等。
-z:测试字符串是空字符串。
-n:测试字符串是非空字符串。
例如判断字符串str非空:[ -z $str ]