shell – 复制stdout,将其传递给两个不同的命令,从最终程序的stdin收集结果

前端之家收集整理的这篇文章主要介绍了shell – 复制stdout,将其传递给两个不同的命令,从最终程序的stdin收集结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有三个程序:生成器,它生成输入到处理器的输入数据和验证器,可以检查处理器输出对于给定输入是否正确(因此它需要两个文件).

我目前做的是:

发电机> in.txt&&处理器< in.txt> out.txt&& cat in.txt out.txt |验证

是否可以在不使用显式文件的情况下实现相同的结果?我已经阅读过关于使用tee和进程替换重复输入的内容,但是我没有找到将两个流收集到单个流中以便最后一步的方法.

我没有测试过这个,但尝试:
{ generator | tee /dev/stderr | processor ; } 2>&1  | verifier

这会将生成输出的副本重定向到stderr.然后在发电机的stdout上运行处理器.然后将两者结合起来管道到验证者.

但是,这不能保证订单,来自发电机和发电机的线路.处理器将到达验证者.

或者,您可以尝试如下所示的流程替换:

( generator | tee >(processor) ) | verifier

猜你在找的Bash相关文章