bash – 如何将错误输出重定向到stdout和stderr?
我正在组建一个复杂的管道,我想在程序输出中包含stderr以便记录,但我也希望错误保留在stderr上,这样我就能发现问题.
我发现this question询问如何将stdout stderr指向一个文件并仍在终端上获得stderr;它很接近,但我不想将stdout重定向到一个文件:程序的输出将被其他脚本使用,所以我希望它保留在stdout上(对于stderr也是如此).所以,总结一下: >脚本在fd 1中生成输出,在fd 2中生成错误. 尽职调查:使用2>& 1捕获stderr非常容易.通过T形管道保存和查看标准输出很容易.我也知道如何将stdout转移到文件并通过管道直接stderr:命令2>& 1 1> fileA |发球文件B.但是我如何复制stderr并将stdout放回fd 1?
作为生成stdout和stderr的测试,让我们使用以下内容:
{ echo out; echo err >&2; } 以下代码演示了如何将stdout和stderr发送到管道中的下一步,同时还将stderr发送到终端: ${ echo out; echo err >&2; } 2> >(tee /dev/stderr) | cat >f err $cat f out err 这个怎么运作 > 2> 这会将stderr重定向到后面的(伪)文件. 这是进程替换,它充当从stderr接收输入的伪文件.它接收的任何输入都被发送到tee命令,该命令将它发送到stderr和stdout. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |