mailコマンドを呼び出すと、スクリプトがエラーなしで一時停止していることがわかりました。スクリプトを閉じるには、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|でまだメモリ内にあることがわかります。 grepmyscript.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
これらは両方とも問題を解決するはずです。