如何在Unix(或Windows)中使用(最好是未命名的)管道将一个进程的stdout发送到多个进程?

前端之家收集整理的这篇文章主要介绍了如何在Unix(或Windows)中使用(最好是未命名的)管道将一个进程的stdout发送到多个进程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将进程proc1的stdout重定向到两个进程proc2和proc3:
proc2 -> stdout
       /
 proc1
       \ 
         proc3 -> stdout

我试过了

proc1 | (proc2 & proc3)

但它似乎没有工作,即

echo 123 | (tr 1 a & tr 1 b)

b23

到stdout而不是

a23
 b23
在unix(或在mac上),使用 tee command
$ echo 123 | tee >(tr 1 a)  | tr 1 b
b23
a23

通常你会使用tee重定向输出到多个文件,但使用>(…)可以
重定向到另一个进程。所以,一般来说,

$ proc1 | tee >(proc2) ... >(procN-1) | procN

会做你想要的。

在windows下,我不认为内置shell有一个等效。微软的Windows PowerShell有一个tee命令。

原文链接:https://www.f2er.com/bash/391911.html

猜你在找的Bash相关文章