test命令可以判断三类条件
• 数值比较
• 字符串比较
• 文件比较
数值比较
| 比较 | 描述 |
| n1 -eq n2 | 检查n1是否与n2相等 |
| n1 -ge n2 | 检查n1是否大于或等于n2 |
| n1 -gt n2 | 检查n1是否大于n2 |
| n1 -le n2 | 检查n1是否小于或等于n2 |
| n1 -lt n2 | 检查n1是否小于n2 |
| n1 -ne n2 | 检查n1是否不等于n2 |
| 字符串比较 |
| 比较 | 描述 |
| str1 = str2 | 检查str1是否和str2相同 |
| str1 != str2 | 检查str1是否和str2不同 |
| str1 < str2 | 检查str1是否比str2小 |
| str1 > str2 | 检查str1是否比str2大 |
| -n str1 | 检查str1的长度是否非0 |
| -z str1 | 检查str1的长度是否为0 |
• 大于号和小于号必须转义,否则shell会把他们当作重定向符号,把字符串值当作文件名
• 大于和小于顺序和sort命令所采用的不同
test命令和测试表达式使用标准的数学比较符号来表示字符串比较,而用文本代码来表示数值比较。如果你对数值使用了数学运算符号,shell会将它们当成字符串值,可能无法得到正确的结果。
文件比较
| 比较 | 描述 |
| -d file | 检查file是否存在并是一个目录 |
| -e file | 检查file是否存在 |
| -f file | 检查file是否存在并是一个文件 |
| -r file | 检查file是否存在并可读 |
| -s file | 检查file是否存在并非空 |
| -w file | 检查file是否存在并可写 |
| -x file | 检查file是否存在并可执行 |
| -O file | 检查file是否存在并属当前用户所有 |
| -G file | 检查file是否存在并且默认组与当前用户相同 |
| file1 -ne file2 | 检查file1是否比file2新 |
| file1 -ot file2 | 检查file1是否比file2旧 |