在 Bash 脚本中使用测试命令

这 bash 测试命令用于检查表达式的有效性。 它检查命令或表达式是真还是假。 此外,它还可用于检查文件的类型和权限。

如果命令或表达式有效,则 test 命令返回一个 0 否则它返回 1.

使用测试命令

测试命令的基本语法如下:

test “var1” operator “var2”

在测试命令中使用变量时,请使用双引号和变量名称。

让我们使用 test 检查 10 是否等于 20 和 10 是否等于 10 的命令:

$ test 10 -eq 20 && echo "true" || echo "false"

在上面 example:

  • test – 测试命令
  • 10 – 第一个变量
  • -eq – 比较运算符
  • 20 – 第二个变量

如果给定的表达式有效,则执行第一个命令,否则执行第二个命令。

?而不是使用 test 命令关键字,也可以使用括号 []. 但请记住,两者之间有空间 [ 标记和要比较的变量:

[ 10 -eq 20 ] && echo "true" || echo "false"

不仅是整数; 你也可以比较字符串 bash 使用测试命令。 让我分享一些例子。

与测试命令进行字符串比较

下面是一些使用 test 命令的字符串比较示例。

检查字符串是否不为空

-n flag 检查字符串长度是否非零。 如果字符串非空则返回 true,否则如果字符串为空则返回 false:

$ [ -n "sam" ] && echo "True" || echo "False"

检查字符串是否为空

-z 标志检查字符串长度是否为零。 如果字符串长度为零,则返回 true,否则返回 false:

$ [ -z "sam" ] && echo "True" || echo "False"

检查字符串是否相等

‘=’ 运算符检查 string1 是否等于 string2。 如果两个字符串相等,则返回 0; 如果两个字符串不相等,则返回 1:

$ [ "sam" = "SAM" ] && echo $? || echo $?

在这种情况下,表达式略有不同,不是键入 true 或 false,而是 stdout 使用打印变量 $?.

检查字符串是否不相等

!= 运算符检查 String1 是否不等于 String2。 如果两个字符串不相等,则返回 0。如果两个字符串相等,则返回 1:

[ "abc" != "ABC" ] && echo $? || echo $?

与测试命令的整数比较

让我们做一些数字比较 bash 测试。

检查数字是否相等

-eq 运算符检查 Integer1 是否等于 Integer2。 如果 integer1 等于 integer2,则返回 0,否则返回 1:

[ 10 -eq 20 ] && echo $? || echo $?

检查数字是否不相等

案例 2. -ne 运算符检查 integer1 是否不等于 integer2。 如果 Integer1 不等于 integer2,则返回 0,否则返回 1:

[ 10 -ne 20 ] && echo $? || echo $?

检查一个数字是否等于或大于另一个

-ge 运算符检查 integer1 是否大于或等于 integer2。 如果整数 1 大于或等于整数 2,则返回 0; 如果不是,则返回 1。

[ 100 -ge 10 ] && echo $? || echo $?

-gt 运算符检查 integer1 是否大于 integer2。 如果是,则返回 0。否则,返回 1:

[ 20 -gt 10 ] && echo $? || echo $?

检查一个数字是否等于或小于另一个

-le 运算符检查 integer1 是否小于或等于 integer2。 如果为真则返回 0,否则返回 1:

[ 5 -le 10 ] && echo $? || echo $?

-lt 运算符检查 integer1 是否小于 integer2。 如果整数 1 小于整数 2,则返回 0,否则返回 1:

[ 5 -lt 10 ] && echo $? || echo $?
整数比较 bash 使用测试命令

文件和目录操作测试

test 命令可用于文件和目录。

这将检查文件是否可执行(由当前用户执行)。 如果文件是可执行文件,则返回 0,否则返回 1:

[ test -x filename ] && echo executable || echo non-executable

您可以以相同的方式使用其他文件权限,如 r 和 w。 您可以使用的其他常用参数是:

| Command | Description              |
|---------|--------------------------|
| -e      | File/directory exists    |
| -f      | is a file                |
| -d      | is a directory           |
| -s      | File size greater than 0 |
| -L      | is a link                |
| -S      | is a socket              |

在中使用测试命令 bash 剧本

到目前为止,您已经看到了 test 命令的一行代码。 您还可以将测试条件与 if-else 条件一起使用 bash 脚本。

分享一个简单的 example 比较将 ar 参数传递给脚本的两个数字:

#!/bin/bash
## Check if the numbers are equal or not


read -p "Enter the first number: " num1
read -p "Enter the second number: " num2

if test "$num1" -eq "$num2" 
then
   echo "$num1 is equal to $num2"
else
   echo "$num1 is not equal to $num2"
fi

你可以运行 bash 具有各种数字的脚本:

使用测试 bash 剧本

我希望本教程可以帮助您了解 test 命令的基础知识 bash.