要将文本回显到日志文件和stderr,但不是stdout,请尝试以下操作:
echo "error" | tee -a log 1>&2
Run Code Online (Sandbox Code Playgroud)
echo "error" 1>&2 | tee -a log
Run Code Online (Sandbox Code Playgroud)
对于第一部分1>&2,您所说的是:"将stdout重定向到stderr".所以回声输出"error"转到stderr.
Pipe(|)只读取stdout,而不是stderr.所以从管道中tee得不到任何东西stdin.因此,它不会向日志文件添加任何内容.
要在控制台上查看stdout和stderr并将两个流发送到日志,请将stderr重定向到stdout,如下所示:
progam.sh 2>&1 | tee -a log
Run Code Online (Sandbox Code Playgroud)