简介
test命令用于检查某个条件(表达式为真)是否成立,它可以进行数值、字符串和文件三个方面的测试比较。详情查看附录1
test和[区别
test 和 [ 命令
Linux 和 UNIX 的每个版本中都包含 test 命令,该命令还有一个更常用的别名 — 左方括号:"["
。test 及其别名通常都可以在 /usr/bin 或 /bin (取决于操作系统版本和供应商)中找到。
test 和 [ 的语法
test expression
[ expression ]
test和[都判断一个表达式,然后返回真或假。如果它和 if、while 或 until 命令结合使用,则您可以对程序流进行广泛的控制。不过,您无需将 test 命令与任何其它结构一起使用;您可以从命令行直接运行它来检查几乎任何东西的状态。
使用 时test 或 [ 均需要一个表达式,表达式一般是文本、数字或文件和目录属性的比较,并且可以包含变量、常量和运算符。运算符可以是字符串运算符、整数运算符、文件运算符或布尔运算符
与if用法示例
if test condition
then
commands
fi
等效于
if [ condition ]
then
commands
fi
如果condition
返回结果为真,则执行commands
语句,否则结束
附录1
表一 数值比较
比较 | 描述 |
---|---|
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 |
表三 文件比较
比较 | 描述 |
---|---|
-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 -nt file2 | file1是否比file2新 |
file1 -ot file2 | file是否比file2旧 |