我正在处理一个脚本,它首先调用一个嘈杂的(stdout
和 和的大量诊断stderr
)程序,然后用其他工具处理它的输出。
该程序的冗长使得它不可能简单地将其标准输出发送到管道,所以目前我们使用一个临时文件——我想结束这种做法。
代替/tmp/foo
,我们可以要求程序将数据写入/dev/fd/N
-- 并且它会,没问题(例如,它不需要seek
文件)。
它当前发送到什么噪音stdout
,stderr
可以继续去那里——操作员已经习惯了看到它,如果它消失了,就会惊慌失措……
但是我如何安排描述符N
存在并发送到下一个程序的stdin
?
noisy -o /dev/fd/N ?????| filter -i /dev/stdin
如果这需要bash
,那就这样吧,但我当然更喜欢适合整个 sh 家族的解决方案。