Ashのパイプラインから最初のコマンドのエラーコードを取得する

Ashのパイプラインから最初のコマンドのエラーコードを取得する

私は通常、wget次のように2つのFIFOに大容量ファイルをダウンロードします。

wget <wget-args> -O - | tee -a "$fifo1" >> "$fifo2"

wget失敗した場合はエラーコードを検索したいと思います。

set -o pipefailパイプラインで一番右のコマンドのエラーコードを返すため、エラーコードがどこから来るのかを判断できませんwget

それでは、灰の山の中でどのようにこれを行うことができますか?

ベストアンサー1

$?戻りコードをwgetから戻りコードを含むファイルにリダイレクトするだけです。

$ (wget <wget-args> -O - ; echo $? > result) | tee -a "$fifo1" >> "$fifo2"

ここのファイル結果には、ジョブのステータスコードが含まれます。

$ cat result
  0

おすすめ記事