Shell 命令 test

Shell 命令 test

test 是一个常用的 Shell 内置命令,用于检查文件类型和比较值。它可以用于条件判断,通常与 if 语句结合使用。test 命令也可以通过方括号 [] 来表示,这种形式在 Shell 脚本中非常常见。

语法

1
test EXPRESSION

1
[ EXPRESSION ]

常用表达式

文件检查

  • -f FILE:检查 FILE 是否存在且是一个普通文件。
  • -d FILE:检查 FILE 是否存在且是一个目录。
  • -e FILE:检查 FILE 是否存在。
  • -r FILE:检查 FILE 是否存在且可读。
  • -w FILE:检查 FILE 是否存在且可写。
  • -x FILE:检查 FILE 是否存在且可执行。
  • -s FILE:检查 FILE 是否存在且大小大于零。

字符串比较

  • -z STRING:检查 STRING 是否为空(长度为零)。
  • -n STRING:检查 STRING 是否非空(长度大于零)。
  • STRING1 = STRING2:检查 STRING1 是否等于 STRING2。
  • STRING1 != STRING2:检查 STRING1 是否不等于 STRING2。

数值比较

  • INTEGER1 -eq INTEGER2:检查 INTEGER1 是否等于 INTEGER2。
  • INTEGER1 -ne INTEGER2:检查 INTEGER1 是否不等于 INTEGER2。
  • INTEGER1 -gt INTEGER2:检查 INTEGER1 是否大于 INTEGER2。
  • INTEGER1 -ge INTEGER2:检查 INTEGER1 是否大于或等于 INTEGER2。
  • INTEGER1 -lt INTEGER2:检查 INTEGER1 是否小于 INTEGER2。
  • INTEGER1 -le INTEGER2:检查 INTEGER1 是否小于或等于 INTEGER2。

示例

文件检查示例

1
2
3
4
5
6
7
8
#!/bin/bash

# 检查文件 b2 是否存在且是一个普通文件
if test -f b2; then
echo "File b2 exists and is a regular file."
else
echo "File b2 does not exist or is not a regular file."
fi

或使用方括号表示法:

1
2
3
4
5
6
7
8
#!/bin/bash

# 检查文件 b2 是否存在且是一个普通文件
if [ -f b2 ]; then
echo "File b2 exists and is a regular file."
else
echo "File b2 does not exist or is not a regular file."
fi

字符串比较示例

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

STRING1="hello"
STRING2="world"

# 检查字符串是否相等
if [ "$STRING1" = "$STRING2" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi

数值比较示例

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

NUM1=5
NUM2=10

# 检查数值大小
if [ $NUM1 -lt $NUM2 ]; then
echo "$NUM1 is less than $NUM2."
else
echo "$NUM1 is not less than $NUM2."
fi

解释

  1. 文件检查

    • test -f b2[ -f b2 ]:检查文件 b2 是否存在且是一个普通文件。
    • 如果条件为真,执行 then 部分的代码;否则,执行 else 部分的代码。
  2. 字符串比较

    • [ "$STRING1" = "$STRING2" ]:检查字符串 STRING1 是否等于 STRING2
    • 如果条件为真,输出 Strings are equal.;否则,输出 Strings are not equal.
  3. 数值比较

    • [ $NUM1 -lt $NUM2 ]:检查数值 NUM1 是否小于 NUM2
    • 如果条件为真,输出 $NUM1 is less than $NUM2.;否则,输出 $NUM1 is not less than $NUM2.

Shell 命令 test
https://linhanmic.github.io/2024/09/14/Shell命令test/
作者
Linhanmic
发布于
2024年9月14日
更新于
2024年9月24日
许可协议