安卓系统

如何比较bash中的字符串

2020小白教你一招解决freenom免费域名 不可用 的问题 免费顶级域名申请教程,tk域名,关注、留言就有机会抽取免费GV号,搭建v2ray ws+tls、trojan必须域名绑定

2020小白教你一招解决freenom免费域名 不可用 的问题 免费顶级域名申请教程,tk域名,关注、留言就有机会抽取免费GV号,搭建v2ray ws+tls、trojan必须域名绑定

目录:

Anonim

在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。 当两个字符串长度相同且包含相同的字符序列时,它们是相等的。

本教程描述了如何在Bash中比较字符串。

比较运算符

比较运算符是比较值并返回true或false的运算符。 在Bash中比较字符串时,可以使用以下运算符:

  • string1 = string2 string1 == string2 如果操作数相等,则等于运算符将返回true。
    • test 使用 = 运算符 ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      执行脚本后,将输出以下输出。

      Strings are equal.

      这是另一个脚本,它接受用户的输入并比较给定的字符串。 在此示例中,我们将使用 ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      运行脚本并在出现提示时输入字符串:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      您也可以使用逻辑和 && 和或 || 比较字符串:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      检查字符串是否包含子字符串

      有多种检查字符串是否包含子字符串的方法。

      一种方法是在子字符串周围使用星号 * 表示所有字符都匹配。

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      该脚本将回显以下内容:

      It's there.

      另一个选择是使用正则表达式运算符 =~ ,如下所示:

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      带有星号 .* 的句点匹配零个或多个出现的字符,除了换行符以外的任何字符。

      检查字符串是否为空

      通常,您还需要检查变量是否为空字符串。 您可以使用 -n -z 运算符来实现。

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      将字符串与大小写运算符进行比较

      除了使用测试运算符,您还可以使用case语句比较字符串:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      词典比较

      词法比较是通过从左到右依次比较字符串中的字符来按字母顺序比较两个字符串的操作。 这种比较很少使用。

      以下脚本按字典顺序比较了两个字符串:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      该脚本将输出以下内容:

      Ubuntu is lexicographically greater than Linuxize.

      结论

      比较字符串是Bash脚本中最基本,最常用的操作之一。 阅读本教程后,您应该对如何在Bash中比较字符串有很好的了解。 您还可以查看我们有关字符串连接的指南。

      bash终端