メールコマンドの呼び出しが原因で、スクリプトがエラーなしで一時停止していることがわかりました。スクリプトを閉じるには、ctrl-cを押すか、プロセスIDに対してkillコマンドを発行する必要があります。
スクリプトの関連セクションは以下のとおりです。
EMAIL_TO="[email protected]"
if [ -f /www/archives/pdf/pdf_201207021048.tar ]; then
echo "file exists"
else
echo "file does not exist"
fi
echo "sending mail next..."
mail -s "pdfbackup" "$EMAIL_TO"
echo "mail sent?"
これを実行すると、「次にメールを送信しています...」というテキストだけが表示されます。プロンプトに戻ることはありません。
スクリプトがps -axでメモリに残っていることがわかります。 grep myscript.sh。
件名とメールの引用符を使ってみましたが、もう一度使わなかった。どちらの方法でも同じ結果が得られます。
何が悪いのですか?
mail
プログラムは、ユーザーが標準入力(EOF(Ctrl-D))。 stdinをリダイレクトしていません。プログラムは入力を待機しています。 /dev/null
(空のメッセージの場合)、既定のファイル、またはパイプからリダイレクトできます。次に例を示します。
echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"
または
mail -s "pdfbackup" "$EMAIL_TO" < /dev/null
これらは両方とも問題を解決するはずです。