私は現在、連鎖したコマンドのエラー処理方法を疑問視しています。以下は、簡単に私の問題を実証するための単なる一例である:bashスクリプトのチェーンコマンド(パイプ)によるエラー処理?
cat file | gzip >/tmp/test
(例えばファイルがないため)猫が失敗した場合、GZIPはまだ実行され、したがって、で最後に保存された終了コードされます$?はです。 セット-eは、この場合には役に立ちません。
これには最適な解決策がありますか?
ありがとうございました!
trap 'echo "ERR caught"' ERR
set -o pipefail
cat file | gzip >/tmp/test
出力ファイルがまだ(作成が並行して行われている)とgzip
が実行されます作成されますが、あなたはクリーンアップを行うことができます。
'$ PIPESTATUS'を試しましたか?それはbashのために働くはずです。 – khachik
私は知らなかった、これは存在した。ありがとう! – aurora