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