Pipe
檢查管道命令是否失敗
可能重複:
如果我將一個命令的輸出通過管道傳輸到另一個命令,有沒有辦法讓我明確檢查第一個命令是否失敗?
例如,如果
prog
處理一個文件並輸出到 STDOUT:prog file1 | cmp - file2
有沒有辦法檢查是否
prog
明確失敗或成功(通過返回碼)?我想避免使用臨時文件,不想依賴第二個命令的輸出;所以,對於上面的例子,我想避免檢查輸出cmp
以確定是否prog
失敗(如果我的問題沒有肯定的答案,我會回過頭來做那個)。
你想要
set -o pipefail
。從 Bash 聯機幫助頁:
pipefail If set, the return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands in the pipeline exit successfully. This option is disabled by default.