スクリプトの出力を別のプログラムにリダイレクトしたい。何か私は通常、これらの二つの形式を使用して行うだろう:Makefileルール内のstdoutとstderrのリダイレクト
[Makefile]
test:
python test.py 2>&1 | pyrg [doesn't work]
は、私が仕事をしてスクリプトファイルを書く避けたい:
python test.py 2>&1 | pyrg
python test.py |& pyrg
私の問題は、それがメイクファイル内から動作しないということです。
編集:
これはpyrg
問題のように思える:私はテストが失敗した場合にcat
部分を取得することはありませんよう
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
これは私にとって悪いソリューションです(すべてがありますMakefileルールの中で)
これは動作するはずです。 'make 'は解釈のために'/bin/sh'に行全体を渡すので、このシェル(あなたのユーザシェルである必要はありません)が作品を理解することができます。 –
それはどうしてうまくいかないのですか?あなたのmakefileのどこかに 'export SHELL:=/bin/bash'を設定してみてください。 –
2番目のコマンドは、 'stdin'から何も入力されなかったかのように動作します。そして実際には最初のものの前に実行されます。 '|'の代わりに '||'を使うと順序が維持されますが、 'pyrg'は入力を受け付けません。 – Xyand