如何Bash中检查字符串是否包含子字符串

linux

在Bash中使用字符串时,最常见的操作之一是确定一个字符串是否包含另一个字符串。

在本文中,我们将向您展示几种检查字符串是否包含子字符串的方法。

使用通配符

最简单的方法就是围绕与星号通配符的子字符串(星号)*,并其与字符串比较。通配符是用于表示零个,一个或多个字符的符号。

如果测试返回true,则在字符串中包含子字符串。

在下面的示例中,我们使用if语句和相等运算符(==)检查是否在STR字符串中找到了子字符串SUB

#!/bin/bash

STR='GNU/Linux is an operating system'

SUB='Linux'

if [[ "$STR" == *"$SUB"* ]]; then

echo "It's there."

fi

执行后,脚本将输出:

It's there.

使用案例运算符

除了使用if语句,您还可以使用case语句检查一个字符串是否包含另一个字符串。

#!/bin/bash

STR='GNU/Linux is an operating system'

SUB='Linux'

case $STR in

*"$SUB"*)

echo -n "It's there."

;;

esac

使用正则运算符

确定指定的子字符串是否出现在字符串中的另一种方法是使用regex运算符=~。使用此运算符时,正确的字符串被视为正则表达式。

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

#!/bin/bash

STR='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字符串。该命令将返回truefalse视情况而定。

#!/bin/bash

STR='GNU/Linux is an operating system'

SUB='Linux'

if grep -q "$SUB" <<< "$STR"; then

echo "It's there"

fi

-q选项告诉grep保持安静,以忽略输出。

结论

检查字符串是否包含子字符串是Bash脚本中最基本且最常用的操作之一。

阅读本教程后,您应该对如何测试一个字符串是否包含另一个字符串有很好的了解。您也可以使用其他命令,例如awksed进行测试。

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

以上是 如何Bash中检查字符串是否包含子字符串 的全部内容, 来源链接: utcz.com/z/507030.html

回到顶部