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

时间:2020-03-05 15:31:44  来源:igfitidea点击:

在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

使用正则表达式运算符

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

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

#!/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保持安静,以忽略输出。