在三通管道中断与过程substituion(Broken pipe in tee with proc

2019-08-18 17:51发布

我只是发现了约进程替换使用>()和我超级兴奋,但是当我试了一下,它并不总是工作。 例如

这工作:

cat /usr/share/dict/words |tee >(tail -1) > /dev/null
ZZZ

这给出了一个破裂的管道错误:

cat /usr/share/dict/words |tee >(head -1) > /dev/null
1080
tee: /dev/fd/63: Broken pipe

任何想法,为什么? 谢谢!

更新:这是RHEL 4和RHEL 6.2

Answer 1:

这里就是为什么你的错误与头但不是尾的解释:

头-1只需要读取其输入的一行。 那么它会退出并在发球继续喂养它的输出入...

尾-1另一方面必须阅读完整的输入,以完成其工作,所以发球完成之前不会终止管道。

你可以安全地忽略中断管道消息和许多程序停止报告这样的错误。 我的机器上我没有看到它。



文章来源: Broken pipe in tee with process substituion
标签: bash shell