Regex Bash脚本不采用正则表达式模式

Regex Bash脚本不采用正则表达式模式,regex,bash,filereader,Regex,Bash,Filereader,这是我第一次使用bash,我想开发一个小脚本,当文本文件作为参数提供时,它逐行读取文件,并在每行中搜索与特定正则表达式模式匹配的单词。如果一行中的某个单词与正则表达式模式匹配,我希望程序打印该单词 下面是我的代码: #!/bin/bash pat = "[((?:[a-z][a-zA-Z0-9_]*))(\\.)(png)]" while IFS='' read -r line || [[ -n $line ]];do echo "Text read from file: $line"

这是我第一次使用bash,我想开发一个小脚本,当文本文件作为参数提供时,它逐行读取文件,并在每行中搜索与特定正则表达式模式匹配的单词。如果一行中的某个单词与正则表达式模式匹配,我希望程序打印该单词

下面是我的代码:

#!/bin/bash
pat = "[((?:[a-z][a-zA-Z0-9_]*))(\\.)(png)]"
while IFS='' read -r line || [[ -n $line ]];do
   echo "Text read from file: $line"
   if [[ $line =~ $pat ]];
   then
        echo "line '$line'"
   else
        echo "DOES NOT MATCH BRANCH_REGEX"
   fi
done < $1
#/bin/bash
pat=“[((?:[a-z][a-zA-Z0-9\]*)(\\.)(png)]”
而IFS=''读-r行| |[[-n$line]];做
echo“从文件读取的文本:$line”
如果[[$line=~$pat]];
然后
回显“行“$line”
其他的
echo“与分支\正则表达式不匹配”
fi
已完成<$1
当我运行这个时,脚本说:

test2.sh:2:test2.sh:pat:未找到从文件读取的文本:#{{ parameters.application_name}性能测试结果test2.sh:5: test2.sh:[[:找不到与BRANCH_REGEX不匹配

我无法确定脚本为什么不采用该模式

修复您的var声明(删除空格):


您的正则表达式对bash无效。
bash
不支持非捕获组,双转义点也是一个问题。此外,您的
=
周围有空格,这是一个语法错误。您应该在shellcheck.net上检查脚本中的所有语法问题

您只需要使用以下正则表达式:

pat='[a-z][a-zA-Z0-9_]*\.png'

shellcheck.net提供了帮助,但正则表达式仍然无法识别模式。我已经在python脚本上测试了这个正则表达式,它工作得很好。有没有办法使它与bash兼容?您能否发布有问题的输入文件中的示例数据,以便我可以测试并让您知道?
pat='[a-z][a-zA-Z0-9_]*\.png'