我正在尝试了解进程替换以及我何时执行此操作:
$ tee >(wc -l) <<< $'aaa\nbbb'
aaa
bbb
$ 2
bash
在下一个提示后打印数字并等待我按回车键。
我正在使用 bash 4.4.12
,在使用 bash 4.3.48
时遇到同样的问题。 bash 4.3.30
没有问题,命令正确输出:
$ tee >(wc -l) <<< $'aaa\nbbb'
aaa
bbb
2
可能的问题是什么?
最佳答案
这是流程替换的怪癖/设计缺陷; bash 只等待主命令终止。它不会等待替代进程结束。它在 tee
结束时创建了一个竞争条件:wc
是否在 bash
打印下一个提示之前完成?有时会,有时不会。
参见 this Unix.SE answer by Stéphane Chazelas以获得详细的解释和可能的解决方法。
关于linux - 进程替换 >(cmd) 输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218510/