出力を画面に印刷し、ビルド結果を解析しながらビルド結果をキャプチャする次のbashコードがあります。
output=$(unbuffer cmake ... | tee /dev/tty)
parseErrors ${output}
ParseErrorsは文字通り動作します。エラーのように見える出力のすべての項目を解析します。そこから終了することもできますが、関数呼び出し後に終了したいと思います。 unbufferコマンドに渡されたcmakeビルドから戻り状態をどのように取得できますか?私はPIPESTATUS [0]を試しましたが、アンバッファ自体から値を返すようです。
答え1
cmake
2行後に戻りコードにアクセスしようとすると、次のようになります。
output=$(unbuffer cmake ... | tee /dev/tty; exit "${PIPESTATUS[0]}")
rc=$?
parseErrors ${output}
exit "$rc"
$()
PIPESTATUSはサブシェル内で使用する必要があります。戻りコードを出力に追加するには、exit
に置き換えますecho
。