stdout に書き込むプログラムがあります。出力をLinux diff コマンドにリダイレクトする方法はありますか、それとも出力をファイルに書き込んでから比較する必要がありますか?
たとえば、プログラムのテスト入力ファイルがたくさんあり、対応する期待される出力が別のファイルセットにあります。そして、./program < t1.input | diff t1.expected
のようなことをしたいと思います。
これを行うこともできます:
./program < t1.input | diff t1.expected -
Bashで:
diff t1.expected <(./program < t1.input)
またはbashを使用する簡単な方法:
diff <(./program) <(cat t1.expected)
私はよくもっと一般的なケースを使います
diff <(command1) <(command2)
ここで、2つのコマンドは、たとえば、異なる入力ファイル、または同じファイルで動作するプログラムの異なるバージョン。 gvimdiffでも動作します。
プログラムの2つの出力を比較したい場合は、zshが最適です。
$ diff =(program1 < input1) =(program2 < input2)