![如何将输出发送到屏幕和邮件?](https://linux22.com/image/25629/%E5%A6%82%E4%BD%95%E5%B0%86%E8%BE%93%E5%87%BA%E5%8F%91%E9%80%81%E5%88%B0%E5%B1%8F%E5%B9%95%E5%92%8C%E9%82%AE%E4%BB%B6%EF%BC%9F.png)
我使用以下命令在脚本末尾发送电子邮件。
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