输出到临时文件并通过管道传输到其他进程

输出到临时文件并通过管道传输到其他进程

我使用的工具tool_1不支持输出到文件stdout,仅支持输出到文件。我想输出到一个临时文件(当场创建)并将内容通过管道传输到另一个工具tool_2。这在 bash 中可能吗?

基本上,我想将两个语句组合成一个语句,同时优雅地创建一个临时文件,该文件随后将被清理:

tool_1 ... > output
tool_2 ... < output

答案1

这是可能的,但有一些注意事项,使用流程替代

tool_1 ... >(tool_2 ...)

指定需要文件名的>(tool_2 ...)位置。tool_1

进程替换是使用管道以一种或另一种形式实现的,因此它不支持文件支持的所有内容;值得注意的是,无法在生成的“文件”中进行查找。

如果这不合适,请使用临时文件:

file=$(mktemp); tool_1 ... "$file" && < "$file" tool_2 ...; rm "$file"

相关内容