Bash

重擊:處理“[statement[s噸一種噸和米和n噸[ statement] ||發現迴聲問題;退出 1’ 邏輯

  • December 10, 2013

在標題中的語句中,存在一個問題,即使語句為真,它仍然會以狀態 1 退出,因為據我了解:

[[ statement ]] || echo problem found ; exit 1

評估如果語句為假,則發現回顯問題。以狀態 1 退出。即使語句評估為真,退出 1 仍然發生,因為它是獨立的。我想通過在子shell中執行它來解決這個問題:

[[ statement ]] || (echo problem found ; exit 1)

這似乎符合我的要求,但這是一種可以接受的處理方式嗎?

你必須使用

[[ statement ]] || { echo problem found ; exit 1; }

不同之處在於大括號語法不會創建子外殼,這意味著exit 1適用於目前外殼。如果您使用(exit 1)子 shell 退出但目前 shell 繼續執行。

您需要使用這樣的語法:

[[ statement ]] || { echo problem found ; exit 1; }

更準確的發送標準誤差

[[ statement ]] || { echo >&2 "problem found"; exit 1; }

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