如何在bash中选择()(即同时读取)标准输入*和*文件?

时间:2017-03-17 14:12:31

标签: linux bash shell select stdin

我有一个程序接受一个FIFO上的输入并将输出发送到另一个FIFO。我想写一个小脚本来控制这个程序。脚本需要同时监听标准输入(因此我可以输入命令来实时调整事物)程序的输出FIFO(因此它也可以响应那里发生的事件)。

基本上我的控制程序需要在标准输入和文件(我的FIFO)之间select

我喜欢学习如何找出如何针对复杂问题开发简单而优雅的基于bash的解决方案,经过一番小小的讨论,我记得tail -f很乐意select开启多个文件,并告诉你其中一个实时更改,所以我最初尝试

tail -f <(od -An -vtd1 -w1) <(cat fifo)

读取两个标准输入(我之前运行stty icanon min 1;这个od调用将每个stdin字符显示在与其ASCII代码一起的单独行上,非常适合转义序列解析)和我的FIFO。这种情况失败(与cat <(cat)一样):od在此处作为后台任务运行,因此它无法访问控制TTY,并且失败并出现神秘的“I / O错误”{ {3}}

所以现在我有点难过了。 我意识到我可以使用任何脚本语言,如Perl / Python / Ruby / Tcl来解决这个问题;我的compsci /工程问题是我是否可以使用(Linux)shell脚本来解决这个问题。

0 个答案:

没有答案