一時ファイルに出力して別のプロセスにパイプする

一時ファイルに出力して別のプロセスにパイプする

私が使用しているツールはファイルへのtool_1出力をサポートせず、ファイルへの出力のみをサポートstdoutします。一時ファイル(その場で作成)に出力し、内容を別のツールにパイプしたいと思いますtool_2。バッシュでこれは可能ですか?

基本的に、2つのステートメントを1つにまとめて整理する一時ファイルをエレガントに作成したいと思います。

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"

関連情報