目录

  1. 引言
  2. test 命令概述
  3. 常用选项与操作符
  4. 使用示例
    • 4.1 文件测试
    • 4.2 字符串测试
    • 4.3 数字测试
  5. 总结
  6. 参考资料

1. 引言

在 Shell 脚本中,test 命令用于评估条件表达式,并根据结果返回真(0)或假(1)。test 主要用于文件测试、字符串比较、数字比较等操作。它是 Shell 编程中判断条件的一种基础工具。


2. test 命令概述

test 命令用于评估条件并返回相应的状态码。它也常用在 if 语句中,以进行条件判断。test 命令通常与 [] 结合使用,表示测试的开始和结束。实际上的 [test 是同一个命令,[ 只是 test 的一种简写形式。

语法

test 条件

[ 条件 ]

如果条件为真,test 返回 0;如果为假,则返回 1。


3. 常用选项与操作符

3.1 文件测试选项

  • -e 文件:检查文件是否存在。
  • -f 文件:检查文件是否为常规文件。
  • -d 文件:检查文件是否为目录。
  • -r 文件:检查文件是否可读。
  • -w 文件:检查文件是否可写。
  • -x 文件:检查文件是否可执行。
  • -s 文件:检查文件是否为空。

3.2 字符串测试操作符

  • -z 字符串:检查字符串是否为空(长度为 0)。
  • -n 字符串:检查字符串是否非空(长度大于 0)。
  • 字符串1 = 字符串2:检查两个字符串是否相等。
  • 字符串1 != 字符串2:检查两个字符串是否不相等。

3.3 数字测试操作符

  • 数字1 -eq 数字2:检查两个数字是否相等。
  • 数字1 -ne 数字2:检查两个数字是否不相等。
  • 数字1 -lt 数字2:检查数字1是否小于数字2。
  • 数字1 -le 数字2:检查数字1是否小于或等于数字2。
  • 数字1 -gt 数字2:检查数字1是否大于数字2。
  • 数字1 -ge 数字2:检查数字1是否大于或等于数字2。

4. 使用示例

4.1 文件测试

判断一个文件是否存在且是常规文件:

if test -f "/path/to/file"; then
  echo "文件存在且是常规文件"
else
  echo "文件不存在或不是常规文件"
fi

使用 [] 语法:

if [ -f "/path/to/file" ]; then
  echo "文件存在且是常规文件"
else
  echo "文件不存在或不是常规文件"
fi

4.2 字符串测试

检查字符串是否为空:

string="Hello"
if test -n "$string"; then
  echo "字符串不为空"
else
  echo "字符串为空"
fi

检查两个字符串是否相等:

str1="Hello"
str2="World"
if test "$str1" = "$str2"; then
  echo "字符串相等"
else
  echo "字符串不相等"
fi

4.3 数字测试

检查两个数字是否相等:

num1=10
num2=20
if test "$num1" -eq "$num2"; then
  echo "数字相等"
else
  echo "数字不相等"
fi

检查一个数字是否大于另一个数字:

num1=30
num2=20
if test "$num1" -gt "$num2"; then
  echo "$num1 大于 $num2"
else
  echo "$num1 小于或等于 $num2"
fi


5. 总结

test 命令是 Shell 编程中非常重要的工具,用于进行各种条件判断,帮助脚本根据不同的输入或文件属性做出不同的决策。test 的常见用法包括文件测试、字符串比较和数字比较等。它的简洁性和灵活性使其成为脚本编写中不可或缺的基本工具。


6. 参考资料