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

2023年 7月 21日 43.6k 0

在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进行测试。如果您有任何问题或反馈,请随时发表评论。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论