出力を画面とメールで送信するには?

出力を画面とメールで送信するには?

次のコマンドを使用して、スクリプトの最後に電子メールを送信します。

echo "Script finished on `date`" | /usr/bin/Mail -s "Script complete" "[email protected]".

しかし、同じメッセージを画面に表示したいです。同じ文でこれをどのように実行できますか?

ベストアンサー1

最も簡単な方法は、teestdoutだけでなくstderrにもメッセージを送信することです。

echo "Script finished on date" | tee /dev/stderr \
    | /usr/bin/Mail -s "Script complete" "[email protected]"

tee標準出力を含む複数の宛先に入力をコピーします。デフォルトでは、stderrとstdoutは両方とも画面に移動します。 stdoutをリダイレクトすると、Mailstderrだけが画面に残ります。

何らかの理由でstdoutに必要な場合は、サブシェル(またはいくつかの他の方法)を使用して再リダイレクトできます。

(
    echo "Script finished on date" | tee /dev/stderr \
        | /usr/bin/Mail -s "Script complete" "[email protected]"
) 2>&1

おすすめ記事