シェルスクリプトを使用して、未読メールをUNIXのテキストファイルとして保存したいと思います。このシェルスクリプトはしばしばcrontabを使用して実行されます。次のコードを試しました。
#!/bin/ksh
mailx > mytest.txt
if grep 'unread' mytest.txt
then echo "hello"
else echo "bye"
fi
サーバーから直接シェルスクリプトを実行すると、保存されたテキストファイルとその結果を表示できます。しかし、実行後に停止しました。
質問がありますか?
ベストアンサー1
未読メッセージが検出された場合は、対話mailx
モードに入り、読み取り、保存、返信などの対話型コマンドを送信するのを待ちます。
すぐに終了するように/dev/null
リダイレクトできます。mailx
if mailx </dev/null | grep -q 'unread'; then
echo 'there is unread mail'
else
echo 'there is no unread mail'
fi
この動作は、特定の実装によって異なる場合がありますmailx
(Unicesごとに若干異なります)。