回到stderr和tee来记录文件?

tim*_*imy 14 bash

在bash脚本中,

echo"error"1>&2 | 发球台

将在屏幕上打印stderr但没有日志到文件,如何同时执行这些操作?

ams*_*ams 9

要将文本回显到日志文件和stderr,但不是stdout,请尝试以下操作:

echo "error" | tee -a log 1>&2
Run Code Online (Sandbox Code Playgroud)


P.P*_*.P. 8

echo "error" 1>&2 | tee -a log
Run Code Online (Sandbox Code Playgroud)

对于第一部分1>&2,您所说的是:"将stdout重定向到stderr".所以回声输出"error"转到stderr.

Pipe(|)只读取stdout,而不是stderr.所以从管道中tee得不到任何东西stdin.因此,它不会向日志文件添加任何内容.

  • +1.非常好的答案,除了一个解决方案:为了这个目的,提及"2>&1"可能是值得的. (3认同)

dog*_*ane 6

要在控制台上查看stdout和stderr并将两个流发送到日志,请将stderr重定向到stdout,如下所示:

progam.sh 2>&1 | tee -a log
Run Code Online (Sandbox Code Playgroud)