美文网首页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 脚本中比较字符串

    原文连接:How to Compare Strings in Bash Shell Scripting 在这个教程...

  • Bash基础知识

    在上一篇文章《不过时的技术-Bash脚本》中,我们简单介绍了Bash脚本,并且学会如何编写、运行一个Bash脚本。...

  • 基础Bash Shell脚本编程

    在bash脚本的第一行要写上#!/bin/bash来告诉系统该脚本是bash脚本这一行在Linux中被称为sheb...

  • Bash 脚本中的字符串替换

    Talk is cheap. Show me the code. 这里提供了三种方法: 直接通过变量替换最为简单直...

  • SHELL脚本之条件测试

    今天主要解答三个问题: 第一、在shell脚本中字符串的对比形式有哪些? 第二、在shell脚本中数字比较的形式有...

  • Bash脚本之字符串处理

    在Bash脚本方面,我真是一个菜鸟。引用变量的值,要在变量名前加$字符串连接:Bash会自己连接,写在后面就行了。...

  • 说说shell脚本中的export 和 source,bash

    说说shell脚本中的export 和 source,bash

  • shell编程基础

    Bash变量 · 在Bash中,变量的默认类型都是字符串型 如果需要要转换,用declare命令 decl...

  • missing之bash脚本编写-1

    Bash脚本编程在平时的工作中可以起到解放生产力的作用。因为通过bash脚本可以将繁琐,可重复的工作进行自动化运行...

  • 命令替换 &命令组合

    在 bash shell 脚本编程中中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command s...

网友评论

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

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