在 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 仍将显示在终端中。