shell 脚本编程中的 test 命令给 if-then 等语句提供了一种测试条件的手段,按照测试条件的比较场景,可分为数值比较、字符串比较及文件比较,个人感觉前两者比较少用,最后一个倒比较常用。
test 命令语法
if test condition
then
commands
fi
# 另一种写法:利用方括号定义测试条件(注意:左侧方括号之后和右侧方括号之前都必须加上一个空格)
# 即方括号是与test命令同义的特殊bash命令
if [ condition ]
then
commands
fi
数值比较
注意:bash shell 只支持整数运算,涉及浮点数等时,不要使用
比较参数 | 说明 | 参数含义 |
---|
n1 -eq n2 | 比较 n1 是否与 n2 相等 | equal | n1 -ne n2 | 比较 n1 是否与 n2 不相等 | not equal | n1 -ge n2 | 比较 n1 是否大于或等于 n2 | greater than or equal | n1 -gt n2 | 比较 n1 是否大于 n2 | greater than | n1 -le n2 | 比较 n1 是否小于或等于 n2 | less than or equal | n1 -lt n2 | 比较 n1 是否小于 n2 | less than |
字符串比较
比较参数 | 说明 | 参数含义 |
---|
str1 = str2 | 比较 str1 是否和 str2 相同 | | str1 != str2 | 比较 str1 是否和 str2 不相同 | | str1 < str2 | 比较 str1 是否比 str2 小 | | str1 > str2 | 比较 str1 是否比 str2 大 | | -n str1 | 检查 str1 的长度是否非0 | not zero? | -z str1 | 检查 str1 的长度是否为0 | zero? |
文件比较(shell 编程中使用较多)
检查 Linux 系统中文件/目录的状态
比较参数 | 说明 | 参数含义 |
---|
-e file | 检查 file 是否存在 | exist | -d file | 检查 file 是否存在并是一个目录 | directory | -f file | 检查 file 是否存在并是一个文件 | file | -s file | 检查 file 是否存在并非空 | | -r file | 检查 file 是否存在并可读 | read | -w file | 检查 file 是否存在并可写 | write | -x file | 检查 file 是否存在并可执行 | execute | -O file | 检查 file 是否存在并属当前用户所有 | Owner | -G file | 检查 file 是否存在并且默认组与当前用户相同 | default Group | file1 -nt file2 | 检查 file1 是否比 file2 新 | new than | file1 -ot file2 | 检查 file1 是否比 file2 旧 | old than |
|