如何在 Bash Shell 脚本中比较字符串

处理字符串是任何编程语言的一部分。 Bash shell 脚本也不例外。 甚至语法也几乎相同。

在本快速教程中,我将向您展示如何比较 Bash shell 脚本中的字符串。

Bash 字符串比较

这是在 Bash 中比较字符串的方法。

if [ "$string1" == "$string2" ]

您也可以直接使用字符串而不是使用变量。

if [ "$string1" == "This is my string" ]

让我用适当的例子向你展示。

检查两个字符串是否相等

如果你想检查两个字符串是否相等,这里是 example:

#!/bin/bash
string1="MyString"
string2="MyString"
if [ "$string1" == "$string2" ]
then
    echo "Equal Strings"
else
    echo "Strings not equal"
fi

提示:注意空格

之间必须有空格 [ and the variable name and the equality operator ==. If you miss any of the spaces here, you’ll see an error like ‘unary operator expected’ or missing `]’。

检查 Bash 中的字符串是否不相等

与其检查质量,不如反其道而行之,检查不等式。 Bash 还提供了否定运算符,以便您可以轻松地在 shell 脚本中使用“如果不等于”条件。

if [ "$string1" != "Not MyString" ]

完整的 example 看起来像这样:

#!/bin/bash
string1="MyString"

if [ "$string1" != "Not MyString" ]
then
    echo "Not Equal Strings"
else
    echo "Strings equal"
fi

在 Bash 中检查字符串是否为空或为空

与 C++ 等其他一些语言不同,在 Bash 中,您可以使用一个命令检查字符串是否为空或为空:

if [ -z "$VAR" ]

-z 实际上检查变量的长度是否为零。 如果变量未设置或为空(等于“”),则长度为零,因此条件将返回真。

一套完整的 example 可以在这里看到:

#!/bin/bash
string1=
string2=""
if [ -z "$string1" ]
then
    echo "Null Strings"
fi
if [ -z "$string2"]
then
    echo "Empty String"
fi

注意使用单括号'[]’ 和双括号 ‘[[]]’ 在 bash 脚本

您还可以使用带有双括号的 if 语句,如下所示:

if [[ "$string1" == "My String" ]]

单括号是旧的 正则表达式 约定俗成,也有不足之处。 如果您不使用双引号将变量括起来并且变量未定义,它将从代码中消失,这将导致语法错误。

if [ $string1 == "My String" ]

如果变量 $string1 为空或在上面的代码中没有定义,那行将等同于

if [  == "$string2" ]

结论

我希望这个快速的小教程可以帮助您比较字符串 bash 外壳脚本。 我建议阅读另一个快速教程 bash 睡眠命令也是如此。

如果您有任何问题或建议,请随时在下面发表评论。