次のコマンドを使用して、スクリプトの最後に電子メールを送信します。
echo "Script finished on `date`" | /usr/bin/Mail -s "Script complete" "[email protected]".
しかし、同じメッセージを画面に表示したいです。同じ文でこれをどのように実行できますか?
答え1
最も簡単な方法は、tee
stdoutだけでなくstderrにもメッセージを送信することです。
echo "Script finished on date" | tee /dev/stderr \
| /usr/bin/Mail -s "Script complete" "[email protected]"
tee
標準出力を含む複数の宛先に入力をコピーします。デフォルトでは、stderrとstdoutは両方とも画面に移動します。 stdoutをリダイレクトすると、Mail
stderrだけが画面に残ります。
何らかの理由でstdoutに必要な場合は、サブシェル(またはいくつかの他の方法)を使用して再リダイレクトできます。
(
echo "Script finished on date" | tee /dev/stderr \
| /usr/bin/Mail -s "Script complete" "[email protected]"
) 2>&1