3

早上编写一个简单的 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

通过使用 sh -x 我可以看到它将报告的数量分配给 var“numofiles”,但它只是认为这是文件的结尾。有人有什么建议吗?

4

1 回答 1

6

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

   EOF
^^^

将其更改为

EOF
于 2011-06-29T06:08:45.367 回答