我需要做类似
的事情~$ command1 | command2 | command1
第三个不应该是同一个程序的另一个实例,而是同一个程序。英语不好,不确定我是否正确解释过,所以再试一次以不同的方式说出我的意思..
我希望能够完成以下工作: Program1打印一些东西,Program2扫描Program1打印的内容,Program2打印一些东西,Program1扫描Program2打印的东西,依此类推。对不起,如果详细了解BASH可以解决这个问题,我的错,但我没有通过谷歌找到任何合适的解决方案。
答案 0 :(得分:1)
总的来说,按照现状,你的问题没有多大意义,因为它讨论了一个圆圈中的两个处理实体(流程)。这种情况是一个母鸡/蛋的情况,并要求问题从哪里开始,它是如何结束的。
所以也许你想告诉我们更多关于你的具体用例的内容,然后我们可以在不同的层面上提供更好的建议来解决你手头的问题。
但是考虑到它的立场,只是更自由一点,我认为@ mark-setchell的评论针对你可能想做的事情。听起来你的command2
是command1
的协程,这意味着它是一个并行运行的东西,接收数据并按需递送数据。 bash
知道这样的事情并支持它,但这并没有被广泛使用,所以不要期望在任何地方获得很多支持。
一个例子可以说明用法:
coproc SED while read a; do echo "$a" | sed 's/x/u/g'; done
ls -l 1>&${SED[1]}
cat 0<&${SED[0]}
coproc
),它运行一个循环,读取行,将x
替换为行中的u
,然后再次输出它们。ls -l
并将输出发送到正在运行的协程。最后两个步骤可以重复完成,因为协同程序一直在运行。