文章目录

      • test 命令语法
      • 数值比较
      • 字符串比较
      • 文件比较(shell 编程中使用较多)

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 是否大于或等于 n2greater than or equal
n1 -gt n2比较 n1 是否大于 n2greater than
n1 -le n2比较 n1 是否小于或等于 n2less than or equal
n1 -lt n2比较 n1 是否小于 n2less than

字符串比较

比较参数说明参数含义
str1 = str2比较 str1 是否和 str2 相同
str1 != str2比较 str1 是否和 str2 不相同
str1 < str2比较 str1 是否比 str2 小
str1 > str2比较 str1 是否比 str2 大
-n str1检查 str1 的长度是否非0not zero?
-z str1检查 str1 的长度是否为0zero?

文件比较(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

更多推荐

shell脚本编程之test命令使用