在 bash 脚本中,
回声“错误”1>&2 | tee - 日志
将在屏幕上打印 stderr 但没有日志到文件,如何同时执行这些操作?
要将文本回显到日志文件和 stderr,而不是 stdout,请尝试以下操作:
echo "error" | tee -a log 1>&2
echo "error" 1>&2 | tee -a log
对于第一部分1>&2
,您要说的是:“将标准输出重定向到标准错误”。所以回显的输出"error"
到stderr。
Pipe( |
) 只读取stdout
,而不是stderr
。所以tee
根本没有stdin
从管道中得到任何东西。因此,它不会向日志文件附加任何内容。
要在控制台上查看 stdout 和 stderr 并将两个流发送到日志,请将 stderr 重定向到 stdout,如下所示:
progam.sh 2>&1 | tee -a log
但默认只有标准输出在管道中传递,所以在
$ echo "error" | tee
tee
只看到来自 stout 的粗壮echo
,而不是 stderr。stderr 仍将显示在终端中。