Pipe

在 ash 中獲取管道中第一個命令的錯誤程式碼

  • July 13, 2018

我用wget這樣的方式將一個大文件下載到兩個 FIFO:

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

我想檢索wget失敗時的錯誤程式碼。

set -o pipefail返回管道中最右邊命令的錯誤程式碼,因此我無法確定錯誤程式碼來自wget.

那麼我怎麼能在灰中做到這一點呢?

只需將 wget 的返回碼重定向到一個文件,這裡$?包含返回碼

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

這裡的文件結果將包含您操作的狀態碼

$ cat result
 0

引用自:https://unix.stackexchange.com/questions/454875