This post基本上会问相同的问题,但我需要一个附加要求,即:退出代码应保持不变。
接受的答案使用管道,因此退出代码不再是command1
的退出代码。
命令集pipefail
不适合我的需要,因为我不想影响执行command1
时的行为,这可能是复合Bash命令本身。
我尝试了以下方法,但是输出不符合预期:
[hidden]$ (echo haha; echo hehe 1>&2) > >(while read -r x; do echo "xx $x"; done)
2> >(while read -r y; do echo "yy $y"; done)
xx haha
xx yy hehe
谁能告诉我为什么?
最佳答案
This was answered早在2012年。原因是替换是
并非同时完成所有操作。一种解决方法是使stderr与stderr保持一致。
foo > >(baz) 2> >(qux 1>&2)
关于linux - 将stdout和stderr重定向到其他程序,而无需更改退出代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27328692/