我需要做点什么
~$ command1 | command2 | command1
第三个不应该是同一个程序的另一个实例,而是相同的过程。英语不好,不确定我是否已正确解释,所以这里再试一次用不同的方式说出我的意思..
我希望完成以下工作:Program1打印一些东西,Program2扫描Program1打印的内容,Program2打印一些东西,Program1扫描Program2打印的内容,等等。对不起,如果详细了解BASH可以解决这个问题,我的错,但我没有通过谷歌找到任何合适的解决方案。
总的来说,按照现状,您的问题没有多大意义,因为它讨论了一个圆圈中的两个处理实体(流程)。这种情况是一个母鸡/蛋的情况,并要求问题从哪里开始,它是如何结束的。
所以,也许你想告诉我们更多关于你的具体用例的内容,然后我们可以在不同的层面上提供更好的建议来解决你手头的问题。
但是考虑到它的立场,只是更自由一点,我认为@ 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
)到当前的shell,它运行一个循环,读取行,用行中的x
替换u
,然后再次输出它们。ls -l
并将输出发送到正在运行的协同程序。最后两个步骤可以重复完成,因为协同程序一直在运行。