龙空技术网

如何在 Bash 中比较字符串

有得看 9

前言:

目前姐妹们对“js 对比字符串”大约比较关注,小伙伴们都需要分析一些“js 对比字符串”的相关内容。那么小编在网上网罗了一些对于“js 对比字符串””的相关文章,希望小伙伴们能喜欢,兄弟们一起来了解一下吧!

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

本教程介绍如何在 Bash 中比较字符串。

比较运算符

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

string1 = string2和 - 如果操作数相等,则相等运算符返回 true。string1 == string2将运算符与命令一起使用。=test[将运算符与命令一起使用以进行模式匹配。==[[string1 != string2- 如果操作数不相等,则不等运算符返回 true。string1 =~ regex- 如果左侧操作数与右侧的扩展正则表达式匹配,则正则表达式运算符返回 true。string1 > string2- 如果左操作数大于按字典(字母)顺序排序的右操作数,则大于运算符返回 true。string1 < string2- 如果右侧操作数大于右侧操作数,则小于运算符返回 true,按字典顺序(字母顺序)排序。-z string- 如果字符串长度为零,则为 True。-n string- 如果字符串长度为非零,则为 True。

以下是比较字符串时需要注意的几点:

必须在二元运算符和操作数之间使用空格。始终在变量名称周围使用双引号,以避免任何单词拆分或通配问题。Bash 不按 “type” 隔离变量,变量根据上下文被视为整数或字符串。检查两个字符串是否相等

在大多数情况下,在比较字符串时,您需要检查字符串是否相等。

以下脚本使用 if 语句和 test 命令来检查字符串是否等于运算符:[=

#!/bin/bashVAR1="Linuxize"VAR2="Linuxize"if [ "$VAR1" = "$VAR2" ]; then    echo "Strings are equal."else    echo "Strings are not equal."fi

执行脚本时,它将打印以下输出。

Strings are equal.

这是另一个脚本,它从用户那里获取输入并比较给定的字符串。在此示例中,我们将使用 command 和 operator。[[==

#!/bin/bashread -p "Enter first string: " VAR1read -p "Enter second string: " VAR2if [[ "$VAR1" == "$VAR2" ]]; then    echo "Strings are equal."else    echo "Strings are not equal."fi

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

Enter first string: LinuxizeEnter second string: UbuntuStrings are not equal.

您还可以使用逻辑 and 和 or 来比较字符串:&&||

[[ "string1" == "string2" ]] && echo "Equal" || echo "Not equal"
Not equal
检查字符串是否包含子字符串

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

一种方法是用星号将子字符串括起来,这意味着匹配所有字符。*

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

该脚本将回显以下内容:

It's there.

另一种选择是使用 regex 运算符,如下所示:=~

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

后跟星号的句点与除换行符之外的任何字符匹配零个或多个匹配项。.*

检查 String 是否为空

很多时候,您还需要检查变量是否为空字符串。您可以使用 and 运算符执行此操作。-n-z

#!/bin/bashVAR=''if [[ -z $VAR ]]; then  echo "String is empty."fi
String is empty.
#!/bin/bashVAR='Linuxize'if [[ -n $VAR ]]; then  echo "String is not empty."fi
String is not empty.
将字符串与 Case 运算符进行比较

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

#!/bin/bashVAR="Arch Linux"case $VAR in  "Arch Linux")    echo -n "Linuxize matched"    ;;  Fedora | CentOS)    echo -n "Red Hat"    ;;esac
Linuxize matched.
词典比较

字典比较是一种操作,其中通过从左到右按顺序比较字符串中的字符,按字母顺序比较两个字符串。这种比较很少使用。

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

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

该脚本将输出以下内容:

Ubuntu is lexicographically greater than Linuxize.
结论

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

如果您有任何问题或反馈,请随时发表评论。

标签: #js 对比字符串