Pipe
在 ash 中獲取管道中第一個命令的錯誤程式碼
我用
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