在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进行测试。

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

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持