簡體   English   中英

Bash:如何檢測管道中的錯誤

[英]Bash: how to detect error in pipe

我有這樣的命令:

COMMAND1 &&
COMMAND2 | COMMAND3 | COMMAND4 &&
COMMAND5

我想確保所有的COMMAND 1-5都成功。 有沒有一種簡單的方法來實現這一目標? 通過研究,我發現PIPESTATUS可以使用,但屈服於一些非常復雜的命令,如

COMMAND1 &&
COMMAND2 | COMMAND3 | COMMAND4 &&
($PST=("${PIPESTATUS[@]}") && (exit ${PST[0]}) && (exit ${PST[1]})) &&
COMMAND5

有辦法輕松完成嗎?

順便說一句:我使用(退出n)獲取一個命令,除了退出狀態為n之外什么都不做。 是否有一個UNIX命令直接執行此操作,如true和false?

謝謝。

嘗試使用set -o pipefail 這可確保管道的錯誤代碼是具有錯誤的最后一個進程的錯誤代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM