在 Bash 中检查某字符串是否包含某子字符串

Muhammad Husnain 2024年2月15日
  1. 使用 case 条件语句(方法 1)
  2. if 语句中使用通配符(方法 2)
  3. 使用 Bash 的 grep 命令(方法 3)
  4. 使用正则表达式运算符 (~=)(方法 4)
在 Bash 中检查某字符串是否包含某子字符串

从字符串中查找子字符串是最常用的字符串操作。有很多方法可以执行此任务。

在本文中,我们将看到多个基于 Bash 脚本的实现来查找给定字符串是否包含特定子字符串。

使用 case 条件语句(方法 1)

case 是 bash 中的条件语句,可用于在脚本中实现条件块。此语句可用于在 bash 中查找子字符串。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='bash'

case $str in

  *"$substr"*)
    echo  "str contains the substr"
    ;;
esac

我们有 2 个字符串,strsubstr。我们应用了一个 case 语句来查找 str 是否包含 substr

输出:

用例条件语句

if 语句中使用通配符(方法 2)

我们还可以在 if 语句中使用通配符从字符串中查找子字符串。查找子字符串的最简单方法是将通配符星号 (*) 放在子字符串周围并将其与实际字符串进行比较。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='tutorial'
if [[ "$str" == *"$substr"* ]]; then
  echo "String contains the sunstring"
else
  echo "String does'nt contains the substring"
fi

输出:

在 if 语句中使用通配符

使用 Bash 的 grep 命令(方法 3)

grep 命令也用于从文件或字符串中查找内容。它有一个选项 -q,它告诉 grep 命令不显示输出;返回

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='tutorial'
if grep -q "$substr" <<< "$str"; then
  echo "String contains the substring"
fi

输出:

使用 Bash 的 grep 命令

使用正则表达式运算符 (~=)(方法 4)

还有另一个称为 regex operator (~=) 的运算符,我们可以用它比较两个字符串以及字符串是否包含子字符串。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='bash'
if [[ "$str" =~ .*"$substr".* ]]; then
  echo "String contains the substring"
fi

请注意,在条件语句中,正则表达式运算符使右侧字符串成为正则表达式,符号 .* 表示比较字符串中出现的 0 次或多次子字符串。

输出:

使用正则表达式运算符

因此,你可以看到几种从字符串中查找子字符串的方法。

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn