3

午前中にチェックを行うための簡単なbashスクリプトを作成する:一部は、いくつかのhtmlファイルをプルダウンし、それらが存在することを確認することです。もう1つの部分は、いくつかのローカルファイルが存在することを確認し、存在しない場合は電子メールで送信することです。私が直面している問題は、「構文エラー:予期しないファイルの終わり」が表示され、なぜそれが発生するのか本当に理解できないことです。コードの簡略化されたバージョンは次のとおりです。

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"に割り当てることができますが、それがファイルの終わりであると信じているだけです。誰か提案がありますか?

4

1 に答える 1

6

ヒアドキュメントラベルの終わりの前にスペースがあってはなりません:

   EOF
^^^

に変更します

EOF
于 2011-06-29T06:08:45.367 に答える