次のテストスイートターゲットを含むmakefileがあります。
rcheck:
foo
これはstdoutにコマンドの出力を表示し、正常にハンドルを作成するfoo
終了コードを返します。foo
追加したい何この目標を達成するには、foo
既存の動作に影響を与えずに出力を解析します。つまり:
foo
stdout/stderr は、以前と同様に stdout/stderr に表示する必要があります。- Makeに関する限り、rcheckの目標の最終結果は
foo
終了コードです。 - stdout fromは
foo
何らかの方法で2番目のコマンドに渡す必要がありますbar
。bar
終了コードは重要ではありません。bar
上記の1.以外はstdoutまたはstderrに出力しないでください(ソリューションがbar
1.それ自体を処理することを意味しない限り)。
ここで最も独創的な解決策は何ですか?
ベストアンサー1
データがfooからbarに渡されるのにかかる時間が心配されず、クリーンなターゲットで処理する必要がある一時ファイルを使用できる場合は、次の手順を実行します。
rcheck:
foo | tee sometempfile
-bar < sometempfile >/dev/null 2>/dev/null
一方、時間に本当に興味がある場合は、barにstdoutへの入力を繰り返すようにして、次のようにしてみてください。
rcheck:
-(foo; echo $$? > sometempfile) | bar
exit $(cat sometempfile)
もっときれいな方法があると確信していますが、上記の方法を考えました。 (参考として両方テストされていません)