我需要将标准错误和标准输出写入$LOG
,同时还从脚本中将它们打印在控制台上。
该脚本有很多命令,因此重定向每个命令并不是一个好的解决方案。
我已经尝试过这个,但它没有按预期工作:
#!/bin/bash
LOG=/var/tmp/log
#...
exec > $LOG 2>&1
我的目标是写入$LOG
任何标准输出和标准错误,但同时也写入标准输出(在控制台上)。是否可以?
答案1
答案2
我不确定这是否是最干净的解决方案,但它对我有用:
#!/bin/bash
LOG=/var/tmp/log
(
# lots of commands
# ...
) 2>&1 | tee $LOG
不过@sebasth 给出了更好的解决方案:
#!/bin/bash
LOG=/var/tmp/log
exec &> >(tee $LOG)
#...