Bash错误:读取文件时重定向不明确

Bash错误:读取文件时重定向不明确,bash,Bash,该脚本的主要思想是在日志文件中查找模式,并在日志中列出一个或多个模式时执行某些操作 flag=No while read line; do if [ $line = “^PAT[0-9]” ]; then patnum=`awk –f= ‘{print $1}’` pattern=`awk –f= ‘{print $2}’` res=`grep –c $pattern FILENAME` if res > 0; then echo "Do so

该脚本的主要思想是在日志文件中查找模式,并在日志中列出一个或多个模式时执行某些操作

flag=No
while read line;
do
  if  [ $line = “^PAT[0-9]” ]; then
   patnum=`awk –f= ‘{print $1}’`
   pattern=`awk –f= ‘{print $2}’`
    res=`grep –c $pattern FILENAME`
    if res > 0; then
      echo "Do something"
      flag=yes
    fi    
  fi
done < $Pattern_File

if [ flag = yes]; then
      sleep 5
      echo "End result"
fi
在一切都设置好之后,我得到了一个错误:bash:$Pattern\u File:dimensional redirect,或者当我这样设置时:done<$Pattern\u File->错误不是这样的文件或目录


有什么想法吗

我认为$Pattern_File变量是空的,这就是错误的原因,bash reads done<就是这样。尝试回显变量。Pattern_File是与脚本位于同一目录中的文件名。而读行应该直接从文件中读取,如果我没有错,请再次阅读我的评论。不要假设变量的内容:检查它。或者,如果文件名为Pattern_file,则删除美元符号,因为它是字符串,而不是变量。。。如果是这种情况,请删除你的问题,因为这只是由于打字错误,因此对未来的读者来说毫无用处:你确定你在if[]中有正确的双引号吗?在上面的标记中,它们与我不同。在echo命令中,它们都应该看起来像最后的那个。您确定bash可以为您进行模式匹配吗?awk调用中的单引号也是如此。这些似乎是“而不是”。
  PAT01="String1"
  PAT02="String2"
  PAT03="String50"