如何Bash中检查字符串是否包含子字符串
在Bash中使用字符串时,最常见的操作之一是确定一个字符串是否包含另一个字符串。
在本文中,我们将向您展示几种检查字符串是否包含子字符串的方法。
使用通配符
最简单的方法就是围绕与星号通配符的子字符串(星号)*
,并其与字符串比较。通配符是用于表示零个,一个或多个字符的符号。
如果测试返回true
,则在字符串中包含子字符串。
在下面的示例中,我们使用if语句和相等运算符(==
)检查是否在STR
字符串中找到了子字符串SUB
:
#!/bin/bashSTR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
echo "It's there."
fi
执行后,脚本将输出:
It's there.
使用案例运算符
除了使用if语句,您还可以使用case语句检查一个字符串是否包含另一个字符串。
#!/bin/bashSTR='GNU/Linux is an operating system'
SUB='Linux'
case $STR in
*"$SUB"*)
echo -n "It's there."
;;
esac
使用正则运算符
确定指定的子字符串是否出现在字符串中的另一种方法是使用regex运算符=~
。使用此运算符时,正确的字符串被视为正则表达式。
带有星号的句点.*
匹配零个或多个出现的字符,除了换行符以外的任何字符。
#!/bin/bashSTR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" =~ .*"$SUB".* ]]; then
echo "It's there."
fi
该脚本将echo以下内容:
It's there.
使用Grep
在grep命令也可以用来查找其他串串。
在以下示例中,我们将字符串$STR
作为输入传递给grep,并检查是否在输入字符串中找到$SUB
字符串。该命令将返回true
或false
视情况而定。
#!/bin/bashSTR='GNU/Linux is an operating system'
SUB='Linux'
if grep -q "$SUB" <<< "$STR"; then
echo "It's there"
fi
-q
选项告诉grep保持安静,以忽略输出。
结论
检查字符串是否包含子字符串是Bash脚本中最基本且最常用的操作之一。
阅读本教程后,您应该对如何测试一个字符串是否包含另一个字符串有很好的了解。您也可以使用其他命令,例如awk
或sed
进行测试。
如果您有任何问题或反馈,请随时发表评论。
以上是 如何Bash中检查字符串是否包含子字符串 的全部内容, 来源链接: utcz.com/z/507030.html