我在 OSX 上,使用 bash,试图理解管道。我希望让程序在两个方向上与 bash shell 进行通信。我想以这样的方式设置它,使其始终是相同的 shell,以便我可以 cd 到某个目录并且 bash 会记住(而不是一直使用新的 bash shell)。
到目前为止我尝试过的是这个。从一个新的终端(A),做
mkdir /tmp/IOdir
cd /tmp/IOdir
mkfifo pToB
mkfifo bToP
tail -f -1 pToB | bash >> bToP
Run Code Online (Sandbox Code Playgroud)
然后,为了测试这个连接,我可以从一个新的终端 (B)
cd /tmp/IOdir
echo echo hello > pToB
Run Code Online (Sandbox Code Playgroud)
从第三个终端 (C)
cd /tmp/IOdir
(read myline && echo $myline) < bToP
Run Code Online (Sandbox Code Playgroud)
这就是我想要的。相同的 bash shell 保持活动状态,输出通过另一侧。将这种状态称为 X,以便我稍后参考。
从状态 X 向前
但是,现在,从这个状态 X 开始,我们不能再做同样的事情了。也就是说,如果我们从终端(B)
echo echo hello > pToB
Run Code Online (Sandbox Code Playgroud)
然后从终端 C
(read myline && echo $myline) < bToP
Run Code Online (Sandbox Code Playgroud)
然后在终端 C 什么也没有通过。 此外,如果我们再次这样做,从终端 …