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

时间:2020-03-05 15:31:40  来源:igfitidea点击:

处理字符串是任何编程语言的一部分。
Bash shell脚本没有任何不同。
即使是语法也很差不多。

在此快速教程中,将介绍如何在Bash shell 脚本中比较字符串。

Bash String比较

以下是我们在Bash中比较字符串。

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

我们还可以直接使用字符串而不是使用变量。

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

让我用正确的例子向我们展示。

检查两个字符串是否相等

如果我们想检查两个字符串是否相平,这是一个示例:

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

提示:注意空格

[和变量名称和平等运算符==之间必须有一个空格。
如果我们在此错过任何空格,我们将看到错误的错误,如"Unary Operator"或者"遗失的"")"。

检查BASH中的字符串是否不等于

而不是检查质量,让我们相反并检查不平等。
Bash还提供否定运算符,以便在shell脚本中轻松使用"IF不等于"条件。

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

整个示例如下所示:

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

检查字符串是否为null或者在bash中为空

与像C++这样的其他语言不同,在bash中,我们可以检查字符串是否为null或者包含一个命令的空项:

if [ -z "$VAR" ]

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

这里可以看到完整的例子:

#!/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" ]]

单个括号是旧的POSIX公约,它有一些缺点。

如果不使用变量周围的双引号并且变量未定义,则会从代码中消失,这将导致语法错误。

if [ $string1 == "My String" ]

如果变量$string1为空或者未在上面的代码中定义,则该行将相同

if [  == "$string2" ]