Shell 运算符
Shell 条件判断 

Shell test 命令

在 Shell 编程中,test 命令(也称为 [ 命令)是用于测试文件属性和检查变量值的工具。它主要用于条件测试和判断,通常与 if 语句结合使用。在大多数 Shell 脚本中,test 命令以 [ 的形式使用,例如 [ expression ],其中 expression 是一个条件表达式,根据其返回值(0表示真,1表示假),来决定执行后续的操作。


基本语法如下

[ expression ]

或者可以使用test命令的完整形式:

test expression

这里的 expression 是一个条件表达式,根据其返回值(0表示真,1表示假),来决定条件语句中的执行路径。


以下是一些常见用法和示例:


检查文件属性:

  • -e file:检查文件或目录是否存在。

  • -f file:检查是否为普通文件。

  • -d file:检查是否为目录。

  • -r file:检查文件是否可读。

  • -w file:检查文件是否可写。

  • -x file:检查文件是否可执行。

file="sample.txt"
if [ -e $file ]; then
    echo "File exists"
fi


比较数字:

  • -eq:相等。

  • -ne:不相等。

  • -lt:小于。

  • -gt:大于。

  • -le:小于等于。

  • -ge:大于等于。

a=10
b=5
if [ $a -gt $b ]; then
    echo "a is greater than b"
fi


比较字符串:

  • =:相等。

  • !=:不相等。

  • -z string:检查字符串是否为空(长度为0)。

  • -n string:检查字符串是否非空(长度不为0)。

str1="hello"
str2="world"
if [ $str1 = $str2 ]; then
    echo "Strings are equal"
fi


其他用法:

  • -s file:检查文件是否存在且大小大于0。

  • -nt file1:检查文件是否比 file1 新。

  • -ot file1:检查文件是否比 file1 旧。

file1="file1.txt"
file2="file2.txt"
if [ $file1 -nt $file2 ]; then
    echo "$file1 is newer than $file2"
fi


总之,test 命令及其 [ 形式是Shell脚本中用于条件测试的核心工具之一,可以帮助脚本根据不同条件进行逻辑判断和控制流程。