14

在 bash 脚本中,

回声“错误”1>&2 | tee - 日志

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

4

4 回答 4

10

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

echo "error" | tee -a log 1>&2
于 2012-11-13T13:18:39.780 回答
8
echo "error" 1>&2 | tee -a log

对于第一部分1>&2,您要说的是:“将标准输出重定向到标准错误”。所以显的输出"error"到stderr。

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

于 2012-11-13T10:54:39.750 回答
7

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

progam.sh 2>&1 | tee -a log
于 2012-11-13T11:32:12.547 回答
0

但默认只有标准输出在管道中传递,所以在

$ echo "error" | tee 

tee只看到来自 stout 的粗壮echo,而不是 stderr。stderr 仍将显示在终端中。

于 2012-11-13T10:46:42.407 回答