1.常用测试表达式
test expression
[ expression ] expression两端必须用空格隔开
` expression `
2.常用测试类型
(1)数值测试
-eq:相等(equal)
-ne:不相等(not equal)
-gt:大于(greater than)
-lt:小于(less than)
-ge:大于等于
-le:小于等于
(2)字符测试
=:字符串相等
=~:左侧是字符串,右侧是模式,判断字符串能否被模式锁匹配,通常只在` `中使用,模式中不使用引号
==:同=
!=:不等
>:按字典顺序排序,字符串str1在字符串str2之后
<:按字典顺序排序,字符串str1在字符串str2之前
-n:字符串是否不空,不空为真,空为假
-z:字符串是否不空,空为真,不空为假
(3)逻辑操作符
-a:逻辑与,操作符两边均为真,结果为真,否则为假
-o:逻辑或,操作符两边一边为真,结果为真,否则为假
!:逻辑否,条件为假,结果为真
(4)文件状态测试测试
a.常用文件类型测试
-e:是否存在
-d:目录
-f:普通文件
-b:块设备
-c:字符设备
-S:套接字文件
-p:管道文件
-L:链接文件,同-h
b.常用文件权限测试
-r:是否具有可读属性
-w:是否具有可写属性
-x:是否具有可执行属性
-s:该文件是否为非空白文件,-s表示的是文件存在,且非空
c.两个文件比较
-nt:文件file_a是否比file_b新
-ot:文件file_a是否比file_b旧
-ef:判断两个文件是否为同一文件,可用于判断硬连接。(主要判断两个文件是否均指向同一个inode)
(5)特殊字符
$0 是脚本本身的名字
$n 是传递给该shell脚本的第n个参数
$# 是传给脚本的参数个数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误(1-255)