myfreax

Bash shell检查字符串是否包含子字符串

在Bash中使用字符串时,最常见的操作之一是确定一个字符串是否包含另一个字符串。使用正则表达式匹配字符串,使用Grep匹配字符串

2 min read
By myfreax
Bash shell检查字符串是否包含子字符串

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

分别是使用通配符检查是否包含字符串。使用case运算符,使用正则表达式匹配字符串,使用Grep匹配字符串。

最简单的方法就是在子字符串使用星号*围绕,并与输入的字符串比较*通配符是用于表示零个,一个或多个字符的正则表达式。

另一个选择是使用运算符=~并与正则表达式.*搭配使用。.*带有星号的句点表示匹配零个或多个字符,除了换行符以外的任何字符。

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

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'
#if [[ $VAR =~ .*Linux.* ]]; then
if [[ "$STR" == *"$SUB"* ]]; then
  echo "It's there."
fi

grep通常用于搜索文件,grep也可读取标准输入,因此你也可以使用grep检查字符串是否包含你指定的字符串。

在使用grep时你应该使用-q选项让grep以忽略标准输出。如果测试返回true,则在字符串中包含子字符串。

在以下示例中,我们将字符串$STR作为输入并传递给grep,检查是否在输入字符串中找到$SUB字符串。

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

if grep -q "$SUB" <<< "$STR"; then
  echo "It's there"
fi

检查字符串是否包含子字符串是Bash脚本中最基本且最常用的操作之一。阅读本教程后,您应该对如何测试一个字符串是否包含另一个字符串有很好的了解。

您也可以使用其他命令,例如awksed进行测试。如果您有任何问题或反馈,请随时发表评论。