我使用以下命令在脚本末尾发送电子邮件。
echo "Script finished on `date`" | /usr/bin/Mail -s "Script complete" "[email protected]".
但是,我也想将相同的消息回显到屏幕上。我如何在同一个声明中做到这一点?
答案1
最简单的方法可能是将tee
消息发送到 stderr 以及 stdout:
echo "Script finished on date" | tee /dev/stderr \
| /usr/bin/Mail -s "Script complete" "[email protected]"
tee
将其输入复制到多个目的地,包括标准输出。默认情况下,stderr 和 stdout 都会显示到屏幕上;您将 stdout 重定向到Mail
,只留下 stderr 进入屏幕。
如果您出于某种原因需要在 stdout 中使用它,您可以使用子 shell(或其他几种方式)将其重定向回来:
(
echo "Script finished on date" | tee /dev/stderr \
| /usr/bin/Mail -s "Script complete" "[email protected]"
) 2>&1