在发球区域的破裂的管子与过程替换

时间:2013-04-01 17:58:50

标签: bash shell

我刚刚发现了使用>()进行过程替换的过程,并对此非常兴奋,但是当我尝试它时,它并不总是有效。例如

这有效:

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

1 个答案:

答案 0 :(得分:1)

这里有一个解释为什么你得到头部错误而不是尾部错误:

head -1只需读取其输入的一行。然后它将退出并且发球台继续将其输出送入......

另一方面,

tail -1必须读取完整的输入以完成其工作,因此在T恤完成之前它永远不会终止管道。

您可以安全地忽略损坏的管道消息,并且许多程序停止报告此类错误。在我的机器上我看不到它。