在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。当两个字符串长度相同且包含相同的字符时,它们是相等的。
在比较字符串时需要注意的是。二进制运算符和操作数之间必须使用空格。始终在变量名称周围使用双引号,以避免出现单词拆分或模糊问题。
Bash不会按类型
分隔变量,bash会根据上下文将变量视为整数或字符串。
本教程描述了如何在Bash中比较字符串。比较运算符是比较值并返回true或false。在Bash中比较字符串时,可以使用以下表达式或者运算符。
string1 = string2
和string1 == string2
如果字符串数相等,则等于运算符将返回true。string1 != string2
如果字符串不相等,则不等式运算符将返回true。
在使用=
运算符时你应该与[
配合使用。使用==
运算符时应该与[[
配合使用,以进行模式匹配。
这是一个脚本,它接受用户的输入并比较指定的字符串。在此示例中,我们使用[[
命令和==
运算符。
#!/bin/bash
read -p "Enter first string: " VAR1
read -p "Enter second string: " VAR2
if [[ "$VAR1" == "$VAR2" ]]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
您还可以使用逻辑和&&
和或||
比较字符串:
[[ "string1" == "string2" ]] && echo "Equal" || echo "Not equal"
如果你需要检查字符串是否为空或者不为空时,你可以使用-z string
表达式判断字符串是否长度为零,如果长度为零则返回true。
你可以使用-n string
判断字符串长度是否不为零,如果长度为不为零则返回true。
以下时一个使用-z string
表达式的示例,判断VAR字符串变量是否为0。
#!/bin/bash
VAR=''
if [[ -z $VAR ]]; then
echo "String is empty."
fi
String is empty.
如果你需要检查字符串是否包含子字符串,有多种检查字符串是否包含子字符串的方法。
一种方法是在子在字符串周围使用星号符号*
,*
是通配符意味着匹配所有字符。除了使用之外,另一个选择是使用正则表达式运算符=~
。
带有星号的句点.*
匹配零个或多个出现的字符,除了换行符以外的任何字符。
#!/bin/bash
VAR='GNU/Linux is an operating system'
#if [[ $VAR =~ .*Linux.* ]]; then
if [[ $VAR == *"Linux"* ]]; then
echo "It's there."
fi
It's there.
比较字符串是Bash脚本中最基本,最常用的操作之一。阅读本教程后,您应该对如何在Bash中比较字符串有很好的了解。您也可以查看有关字符串连接的指南。
如果您有任何问题或反馈,请随时发表评论。