1.字符串测试
string1 = string2 string1等于string2(=两侧必须有空格)
string1 != string2 string1不等于string2(!=两侧必须有空格)
string (string不为空)
-z string (string的长度为0)
-n string (string的长度不为0)
例子:
test -n $word
test tom = sun
2.整数测试:
int1 -eq int2 int1等于int2
int1 -ne int2 int1不等于int2
int1 -gt int2 int1大于int2
int1 -ge int2 int1大于或等于int2
int1 -lt int2 int1小于int2
ini1 -le int2 int1小于或等于int2
3.逻辑测试:
expr1 -a expr2 逻辑与
expr1 -o expr2 逻辑或
!expr 逻辑非
4.文件测试:
-b file 当file存在并且是块文件返回为真
-c file 当file存在并且是字符文件返回为真
-d pathname 当pathname存在并且是一个目录返回为真
-e pathname 当由pathname指定的文件或目录存在时候返回为真
-f file 当file存在并且是正规文件的时返回真
-g pathname 当由pathname指定文件或目录存在并且设置了SGID位时返回为真
-h file 当file存在并且是符号连接文件时候返回真,该选项在一些老系统中无效
-k pathname 当由pathname指定的文件或目录存在并且设置了“粘滞”位sticky时返回真
-p file 当file存在并且是命名管道的时候返回真
-r pathname 当由pathname指定的文件或目录存在并且可读时返回真
-s file 当file存在并且大小大于0时返回真
-u pathname 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w pathname 当由pathname指定的文件或目录存在并且可写时返回真
-x pathname 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了他的内容被访问必然是可执行的
-O pathname 当由pathname指定的文件或目录存在并且被当前进程的有效用户ID所指定的用户拥有时返回真(可以理解为这个文件或目录存在而且属于当前用户文件)
-G pathcname 当由pathname指定的文件或目录存在并且被当前进程的有效用户组ID所指定的用户拥有时返回真(可以理解为这个文件或目录存在而且属于当前用户所属组文件)
下面是一个脚本的实例: