如何在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
相关产品推荐
相关产品推荐

