Bash将所有stdout输出到控制台和文件

时间:2017-09-30 00:57:08

标签: linux bash shell scripting

我正在尝试将所有stdoutstderr输出到控制台和文件。我知道./script | tee somefile,但这对我不起作用。我想让它自动完成,而不是我从控制台管道。我试过了

#!/bin/sh
exec 2>&1 | tee somefile
echo "..."

但这不起作用。什么是正确的解决方案?

1 个答案:

答案 0 :(得分:1)

经典的解决方案是在脚本的顶部添加类似的内容:

test -z "$REXECED" && { REXECED=1 exec $0 "$@" 2>&1 |  tee -a somefile; exit; }

您可能也喜欢:

test -t 1 && {  exec $0 "$@" 2>&1 |  tee -a somefile; exit; }