P0
,P1
,... P(n-1)
,其中 n> 0
。如何轻松地将程序Pi
的输出重定向到程序P(i+1 mod n)
中,对于所有的i
(0 <= i < n
)?例如,假设我有一个程序
square
,它反复读取数字并打印该数字的平方,并且一个程序calc
,它有时会打印一个数字,然后期望能够读取它的平方。如何连接这些程序,以便每当calc
打印一个数字时,square
都会将其平方并将其返回给calc
?编辑:我可能应该澄清一下我所说的“容易”。命名管道/fifo解决方案确实可以工作(我曾经使用过),但是与使用bash管道相比,实际上需要相当多的工作才能正确地执行它。(您需要获取尚不存在的文件名,使用该名称创建管道,运行“管道循环”,清除命名管道。)想象一下,如果您不能再写
prog1 | prog2
,并且始终必须使用命名管道来连接程序。我正在寻找的是几乎像编写“正常”管道一样容易的东西。例如,类似
{ prog1 | prog2 } >&0
这样的东西会很棒。
:
(true
),代替echo|read
。例如:: | { cmd | cmd >/dev/fd/0}
。 例如:: | { nc -lp 5000 >/dev/fd/0; }
是一个简单的 echo 服务器,在客户端 EOF 时正确终止。 - regnarg