Bash
if 和有什麼不一樣![f哦哦_[F○○[ foo] 而如果[!F哦哦_[!F○○[ ! foo] 在 Bash 中?
我知道這
!
用於否定 Bash 中的 if 條件,但我剛剛看到採用以下格式的程式碼:if ! [[ CONDITION ]]; then SOMETHING fi
這種格式和下面的有區別嗎?
if [[ ! CONDITION ]]; then SOMETHING fi
我試過Google,但還沒有找到關於前一種語法的任何東西。
對於單一條件,它們都是相同的:
$ if [[ ! 1 = 1 ]]; then echo true; else echo false; fi false $ if ! [[ 1 = 1 ]]; then echo true; else echo false; fi false
測試多個條件時會有所不同:
$ if [[ ! 1 = 2 || 2 = 2 ]]; then echo true; else echo false; fi true $ if ! [[ 1 = 2 || 2 = 2 ]]; then echo true; else echo false; fi false
因此外部否定對結果具有更高的優先級。
當然,您可以對整個條件應用內部否定,因此在這種情況下,您更願意使用外部否定:
$ if [[ ! ( 1 = 2 || 2 = 2 ) ]]; then echo true; else echo false; fi false