onetozero 2019-05-14
在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。 当两个字符串具有相同的长度并且包含相同的字符序列时,它们是相等的。
本教程描述了如何比较Bash中的字符串。
比较运算符是比较值并返回true或false的运算符。 在比较Bash中的字符串时,您可以使用以下运算符:
string1 = string2
和 string1 == string2
- 相等运算符,如果字符串相等,则返回true。string1 != string2
- 不等式运算符,如果字符串不相等,则返回true。string1 =~ regex
- 正则表达式运算符,如果左边字符串数与右侧的扩展正则表达式匹配,则返回true。string1 > string2
- 大于运算符,按字典顺序(字母顺序)排序,如果左边字符串大于右边字符串,则返回true。string1 < string2
- 小于运算符,按字典顺序(字母顺序)排序,如果右边边字符串大于左边字符串,则返回true。-z string
- 如果字符串长度为零,则为True。-n string
- 如果字符串长度不为零,则为True。以下是比较字符串时需要注意的几点:
在大多数情况下,在比较字符串时,您需要检查字符串是否相等。
以下脚本使用test [命令检查字符串是否与=运算符相等:
#!/bin/bash
if [ "$VAR1" = "$VAR2" ]; then
echo "字符串是相等的。"
else
echo "字符串是不相等的。"
fi
执行脚本时,它将打印以下输出。
这是另一个脚本,它接受用户的输入并比较给定的字符串。 在这个例子中,我们将使用[[command and == operator]。
再输入字符串
请输入第一二个字符串
#!/bin/bash
read -p "请输入第一个字符串: " VAR1
read -p "请输入第二个字符串: " VAR2
if [[ "$VAR1" == "$VAR2" ]]; then
echo "字符串是相等的。"
else
echo "字符串是不相等的。"
fi
运行脚本并在提示时输入字符串:
您还可以使用逻辑和&&和或|| 比较字符串:
linuxidc
检查String是否包含子字符串
有多种方法可以检查字符串是否包含子字符串。
一种方法是使用星号符号*来环绕子串,这意味着匹配所有字符。
#!/bin/bash
VAR='GNU/Linux 是一个操作系统'
if [[ $VAR == *"Linux"* ]]; then
echo "它在那里。"
fi
该脚本将回显以下内容:
它在那里。
另一种选择是使用正则表达式运算符=〜,如下所示:
#!/bin/bash
VAR='GNU/Linux 是一个操作系统'
if [[ $VAR =~ .*Linux.* ]]; then
echo "它在那里。"
fi
后跟星号.*的句点匹配除了换行符之外的任何字符零次或多次出现。
通常,您还需要检查变量是否为空字符串。 您可以使用-n和-z运算符来完成此操作
#!/bin/bash
VAR=''
if [[ -z $VAR ]]; then
echo "字符串为空。"
fi
输出:
字符串为空。
#!/bin/bash
输出:
字符串不为空。
您也可以使用case语句来比较字符串,而不是使用测试运算符:
#!/bin/bash
VAR="Arch Linux"
case $VAR in
"Arch Linux")
echo -n -e "Linuxidc 匹配\n"
;;
Fedora | CentOS)
echo -n "Red Hat"
;;
esac
输出:
Linuxidc 匹配
词法比较是通过从左到右顺序比较字符串中的字符,按字母顺序比较两个字符串的操作。这种比较很少使用。
下面的脚本从词汇上比较了两个字符串:
总结
比较字符串是Bash脚本中最基本和最常用的操作之一。 阅读本教程后,您应该很好地理解如何比较Bash中的字符串。
如果您有任何问题或反馈,请随时发表评论。