BASH中文件的意外结束

时间:2011-06-29 06:02:57

标签: string bash syntax-error heredoc

写一个简单的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“numoffiles”,但它只是认为这是文件的结尾。有没有人有任何建议?

1 个答案:

答案 0 :(得分:6)

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

   EOF
^^^

将其更改为

EOF