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

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

我试过了

  1. proc1 | (proc2 & proc3)

但它似乎没有工作,即

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

  1. b23

到stdout而不是

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

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

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

会做你想要的。

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

猜你在找的Bash相关文章