假设我有三个程序:发电机 ,产生输入数据馈送到 处理器 和 验证者 可以检查处理器输出对于给定输入是否正确(因此它需要两个文件)。
我目前做的是:
生成器 > in.txt && 处理器 < in.txt > out.txt && cat in.txt out.txt |验证者
是否可以在不使用显式文件的情况下实现相同的结果?我已经阅读了有关使用 tee 和 process 替换复制输入的信息,但我没有找到一种方法将两个流收集到一个流中以进行最后一步。
最佳答案
我没有测试过这个,但尝试:
{ generator | tee /dev/stderr | processor ; } 2>&1 | verifier
这将重定向
generator
的副本输出到 stderr
.然后运行 processor
在 stdout
的 generator
.然后将两者与管道结合到 verifier
.但是,这不能保证来自生成器和处理器的行到达验证器的顺序。
或者,您可以尝试如下流程替换:
( generator | tee >(processor) ) | verifier
关于shell - 复制标准输出,将其通过管道传输到两个不同的命令,将两者的结果收集到最终程序的标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14704766/