BASH中文件的意外结束

ebo*_*oni 3 string bash heredoc syntax-error

写一个简单的bash脚本在早上为我做一些检查:一部分是拉下一些html文件并确保它们存在.另一部分是确保存在一些本地文件,如果不存在则通过电子邮件发送.我面临的问题是我收到了"语法错误:意外的文件结束",我无法理解为什么会发生这种错误.这是代码的简化版本:

for myHost in $HOSTS
do
  result=$(wget -T $TIMEOUT -t 1 $myHost -O /dev/null -o /dev/stdout)
  result2=$(echo $result | grep "awaiting response")
  connected=$(echo $result | grep "404");
  if [ "$connected" != "" ]; then
    for myEMAIL in $EMAIL
    do
      echo -e "$(date) - $myHost is down! \n This is an automated message." | mailx -r "box.email.com"  -s "$SUBJECT" $myEMAIL
    done
  fi
done

numoffiles=`find . -maxdepth 1 -mtime -1 | grep -i .html | wc -l`
if [ "$numoffiles" -ne 5 ]; then
  FILE=$(find . -maxdepth 1 -mtime -1 -print| grep -i .html)
  mailx -r "box.email.com"  -s "FILE MISSIN" "$EMAIL" << EOF
  EOF
fi
Run Code Online (Sandbox Code Playgroud)

从使用sh -x我可以看到它将报告的数量分配给var"numoffiles",但它只是认为这是文件的结尾.有没有人有任何建议?

cod*_*ict 6

在heredoc标签结束之前不应该有任何空格:

   EOF
^^^
Run Code Online (Sandbox Code Playgroud)

将其更改为

EOF
Run Code Online (Sandbox Code Playgroud)

  • @ user185572:不客气.不要忘记将答案标记为已接受. (3认同)