unbufferコマンドの戻り値

unbufferコマンドの戻り値

出力を画面に印刷し、ビルド結果を解析しながらビルド結果をキャプチャする次のbashコードがあります。

output=$(unbuffer cmake ... | tee /dev/tty)
parseErrors ${output}

ParseErrorsは文字通り動作します。エラーのように見える出力のすべての項目を解析します。そこから終了することもできますが、関数呼び出し後に終了したいと思います。 unbufferコマンドに渡されたcmakeビルドから戻り状態をどのように取得できますか?私はPIPESTATUS [0]を試しましたが、アンバッファ自体から値を返すようです。

ベストアンサー1

cmake2行後に戻りコードにアクセスしようとすると、次のようになります。

output=$(unbuffer cmake ... | tee /dev/tty; exit "${PIPESTATUS[0]}")
rc=$?
parseErrors ${output}
exit "$rc"

$()PIPESTATUSはサブシェル内で使用する必要があります。戻りコードを出力に追加するには、exitに置き換えますecho

おすすめ記事