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

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

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

使用通配符

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

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

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

#!/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

该脚本将回显以下内容:

It's there.

使用Grep#

grep命令还可用于在另一个字符串中查找字符串。

在下面的示例中,我们传递了字符串 $STR 作为grep的输入,并检查字符串是否 $SUB 在输入字符串中找到。 该命令将返回 true 要么 false 作为适当的。

#!/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脚本中最基本且最常用的操作之一。

阅读本教程后,您应该对如何测试一个字符串是否包含另一个字符串有很好的了解。 您还可以使用其他命令,例如 awk 要么 sed 用于检测。

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

bash终端

Sidebar