終了値を失うことなくtsを使用[重複]

終了値を失うことなくtsを使用[重複]

次のように多くの出力を生成する長いコマンドを実行するビルドスクリプトがあります。

./compile

tsコンパイルパフォーマンスの問題を解決するには、次のものを使用したいと思います。その他のユーティリティ)各出力行の前にタイムスタンプが付きます。だから私はスクリプトを次のように更新しました。

bash -c "./compile | ts '[%Y-%m-%d %H:%M:%S]'"

これは機能しますが、終了値は常に失敗した場合の0イベントです(終了時にエラーがないcompileため)。ts

compile使用時に終了コードを返すようにスクリプトをどのように更新しますかts

ベストアンサー1

Bashを使用しているので、$PIPESTATUSパイプラインのコマンドのさまざまな終了コードを含む配列であるこれを使用できます。

bash -c './compile | ts "[%Y-%m-%d %H:%M:%S]"; exit "${PIPESTATUS[0]}"'

zsh同様の機能がありますが、代わりに$pipestatus配列を使用します(代わりに配列にzsh番号が付けられていることに注意してください)。10

おすすめ記事