21

スクリプトの出力を別のプログラムにパイプしたい。私が通常これらの2つの形式を使用して行うこと:

 python test.py 2>&1 | pyrg
 python test.py |& pyrg

私の問題は、makefile内からは機能しないことです。

[Makefile]
test:
    python test.py 2>&1 | pyrg [doesn't work]

作業を行うスクリプトファイルを作成することは避けたいと思います。

編集:

これは問題のようですpyrg

python test.py 2>&1 | tee test.out // Writes to the file both stderr and stdout
cat test.out | pyrg                // Works fine!
python test.py 2>&1 | pyrg         // pyrg behaves as if it got no input

テストが失敗した場合にその部分に到達することは決してないので、これは私にとって悪い解決策ですcat(すべてがMakefileルール内にあります)

4

3 に答える 3

8

同じ問題でこの質問に遭遇し、答えに満足できませんでした。TLBNtest case で失敗したバイナリがありましたexample2.TLBN

これは私のmakeファイルが最初に見たものです。

make:
     ./TLBN example2.TLBN > ex2_output.txt

私が期待していたエラーメッセージで失敗し、makeプロセスを停止しました。

これは私の修正です:

make:
    -./TLBN example2.TLBN > ex2_output.txt 2>&1

-make に stderr への出力を無視するように指示する行の先頭にある に注意してください。

これが同様の問題を抱えている人に役立つことを願っています。

于 2013-10-24T05:16:15.373 に答える
4

簡単なアプローチが機能しない理由は説明されていませんが、トリックは実行されます。

[Makefile]
test: 
    python test.py >test.out 2>&1; pyrg <test.out
于 2012-08-02T06:57:01.117 に答える