美文网首页Just programing
在 BASH 脚本中比较字符串

在 BASH 脚本中比较字符串

作者: chengchaos | 来源:发表于2020-02-17 20:12 被阅读0次
    image

    原文连接:How to Compare Strings in Bash Shell Scripting

    在这个教程里我们会学到如何在 Bash 脚本中进行字符串的比较,以及怎样检测字符串是否为空或者空串(null or empty)

    处理字符串是任何语言都具备的功能,Bash 脚本也一样,甚至是语法都大致相同。

    这里,我们展示一下如何在 Bash 脚本中比较字符串。

    Bash 中的字符串比较

    下面是如何比较两个字符串的例子:

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

    也可以直接使用字符串的字面量而不是使用变量:

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

    让我们看几个常见的例子:

    比较两个字符串是否相等

    如果想比较两个字符串是否相等,可以参考下面这个例子:

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

    注意字符间的间距
    这里的方括号 [ 和变量之间以及变量和操作符 == 之间必须有空格,如果没有,将会看到类似:“unary operator expected” 或者 “missing ']'” 这样的错误。

    在 Bash 中判断字符串不相等

    作为替代,我们还可以使用相反的操作,即检查两个字符串是否不相等。Bash 也提供了不相等的比较操作,因此我们还可以在脚本中使用类似“如果不相等” 这样的条件:

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

    下面是一个完整的例子:

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

    在 Bash 中检测字符串是否是空值或者空串

    和那些个与 C++ 类似的语言不同,在 Bash 脚本中还可以用一个命令来检测一个字符串是否是空值(null)或者空串(empty ""):

    if [ -z "$VAR" ]
    

    -z 实际上检查的是长度是否为 0,如果变量没有设置或者它是个空串(empty 就是 "")则长度为 0,因此条件判断的结果为 true

    下面是一个完整的例子:

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

    Bash 脚本中的单方括号和双方括号

    我们还可以在 if语句中使用双方括号:

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

    单个方括号是老版本的 POSIX 约定的写法,现在看起来它有一些毛病。如果我们没有使用双括号包围变量并且变量没有被定义,变量就会在代码中消失,最终导致执行脚本的结果是一个语法错误。

    if [ $string1 == "My String" ]
    

    在上面的代码中,如果变量 $string1 为空串或者没有定义,则这行代码等同于:

    if [ == "My String" ]
    

    总结

    我希望我的这篇简短的教程可以帮助您学会在 Bash 脚本编程中如何比较字符串。同时我也推荐您读一下其他的快速教程 bash sleep command

    如果您有任何问题或建议,欢迎您在评论区留言。

    关于作者:

    Abhishek

    Abhishek (阿布舍克)
    软件工程师,Linux 极客,开源狂热分子,经典|侦探|悬疑追剧人。人生终极目标是帮助人们使用 Linux。

    相关文章

      网友评论

        本文标题:在 BASH 脚本中比较字符串

        本文链接:https://www.haomeiwen.com/subject/tdjifhtx.html