test: 测试Shell脚本里的条件,通过推出状态返回其结果。
用法:
test [ expression ] 或 [ [ expression ] ]
注意空格
test表达式:是则为真
字符串测试:
string 测试字符串不为空
-n string 测试字符串非null
-z string 测试字符串为null
s1 = s2 两字符串相同
s1 != s2 两字符串不相同
文件测试:
-b file 文件是块设备
-c file 文件是字符设备
-d file 文件是目录
-e file 文件是一般文件
-g file 文件有设置它的setgid位
-u file 文件有设置它的setuid位
-h/L file 文件是符号链接
-p file 文件是管道文件
-r file 文件可读
-w file 文件可写
-x file 文件可执行,或者是可被查找的目录
-s file 文件是socket
-s file 文件不是空的
-t n 文件描述符指向一终端
整数测试:
n1 -eq n2 整数n1 n2相等
n1 -ne n2 整数n1 n2不相等
n1 -lt n2 n1小于n2
n1 -gt n2 n1大于n2
n1 -le n2 n1小于等于n2
n1 -ge n2 n1大于等于n2
在测试多个条件是否成立时可以使用 -a(做逻辑AND)
在测试在多个条件中是否有某一个成立时可以使用 -o(做逻辑或)
-a -o是test运算符,它们与&& ||(Shell运算符)之间有一个差异点
if [ -n "$str" -a -f "$file" ]
if [ -n "$str" ] && [ -f "$file" ]