You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中检查字符串是否包含指定子字符串列表?

Bash检查字符串是否包含子字符串列表的实现

你的代码存在几个Bash语法和逻辑问题,以下是修正后的完整实现:

#!/bin/bash

STR='foobar/group/dog/name'
# 正确定义Bash数组:元素用空格分隔,不需要逗号
SUB=("group/dog/name" "group/dog2/name")

# 遍历子字符串数组
for sub in "${SUB[@]}"; do
    # Bash中用==进行模式匹配,*表示任意字符
    if [[ "$STR" == *"$sub"* ]]; then
        echo "It's there and print out the matching substring: $sub"
        # 如果只需要第一个匹配项,可添加break退出循环
        # break
    fi
done

关键修正点说明:

  • 数组定义:Bash数组不需要用逗号分隔元素,正确格式是数组名=("元素1" "元素2"),用"${SUB[@]}"可以遍历所有数组元素。
  • 子字符串检查:Bash中没有contains关键字,使用[[ "$字符串" == *"子字符串"* ]]实现包含判断,*是通配符,匹配任意长度的字符。
  • 遍历逻辑:通过for循环逐个检查数组中的子字符串,找到匹配项后输出结果;如果只需要第一个匹配的结果,可在echo后添加break终止循环。

内容的提问来源于stack exchange,提问作者wawawa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:44:53