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旧 |