Just programing

在 BASH 脚本中比较字符串

2020-02-17  本文已影响0人  chengchaos
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。

上一篇下一篇

猜你喜欢

热点阅读