条件测试常用三种形式:
1. 使用test命令,如: test -f "$i"
2.用一对方括号将测试条件包起来,如:[ -f "$i" ]
3.用[[条件表达式]]的形式
文件方面的测试
参数 | 功能 | |
-r | 文件名 | 如文件存在并且是用户可读的,则测试条件为真 |
-w | 文件名 | 如文件存在并且是用户可写的,则测试条件为真 |
-x | 文件名 | 如文件存在并且是用户可执行的,则测试条件为真 |
-f | 文件名 | 如文件存在并且是普通文件,则测试条件为真 |
-d | 文件名 | 如文件存在并且是目录文件,,则测试条件为真 |
-p | 文件名 | 如文件存在并且是命名的FIFO文件,则测试条件为真 |
-b | 文件名 | 如文件存在并且是块特殊文件,则测试条件为真 |
-c | 文件名 | 如文件存在并且是字符特殊文件,则测试条件为真 |
-s | 文件名 | 如文件存在并且文件长度大于0,则测试条件为真 |
-t | 文件描述符 | 如文件被打开切文件描述符是与终端设备相关的,则测试条件为真,默认文件描述符是1 |
字符串测试
参数 | 功能 | |
-z | s1 | 如果字符串s1的长度为0,则测试条件为真 |
-n | s1 | 如果字符串s1的长度大于0,则测试条件为真 |
sl | 如果字符串s1不是空字符串,则测试条件为真 | |
=或== | s1=s2 | 如果s1等于s2,则测试条件为真,“=”前后应有空格 |
!= | s1!=s2 | 如果s1不等于s2,则测试条件为真 |
< | s1<s2 | 如果按字典顺序s1在s2之前,则测试条件为真 |
> | s1>s2 | 如果按自定顺序s1在s2之后,则测试条件为真 |
数值测试
参数 | 功能 |
n1 -eq n2 | 如果整数n1等于n2,则测试条件为真 |
n1 -ne n2 | 如果整数n1不等于n2,则测试条件为真 |
n1 -lt n2 | 如果如果n1小于n2,则测试条件为真 |
n1 -le n2 | 如果如果n1小于或等于n2,则测试条件为真 |
n1 -gt n2 | 如果n1大于n2,则测试条件为真 |
n1 -ge n2 | 如果n1大于或等于n2,则测试条件为真 |