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脚本中用于条件测试的核心工具之一,可以帮助脚本根据不同条件进行逻辑判断和控制流程。