メールを読むためにUnixでmailxコマンドの結果をテキストファイルに保存する方法は?

メールを読むためにUnixでmailxコマンドの結果をテキストファイルに保存する方法は?

シェルスクリプトを使用して、未読メールを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ごとに若干異なります)。

おすすめ記事