當我運行帶有-e
選項的bash腳本時,出現了一些對我來說沒有意義的行爲,該選項有多個與&&
一起串聯的命令,其中一個命令失敗。我希望腳本停止失敗的命令並返回退出狀態,但是它只是快樂地執行腳本的其餘部分。爲什麼bash在短路命令的順序中不能停止錯誤?
下面舉例說明了意義,我:
$ false && true; echo $?
1
$ bash -xe -c "false && true"; echo $?
+ false
1
$ bash -xe -c "false; true"; echo $?
+ false
1
這裏是一個沒有意義對我說:
$ bash -xe -c "false && true; true"; echo $?
+ false
+ true
0
這是我不明白是什麼繼續。 false && true
返回狀態1,所以腳本不應該停止執行並返回狀態1,就像腳本爲false; true
時那樣?
雖然實驗,我發現它的作品我會想到辦法,如果我周圍的命令用括號鏈:
$ bash -xe -c "(false && true); true"; echo $?
+ false
1
任何人都可以給這個解釋?
這實際上很有意義。我知道'if'是這樣工作的,但是我從未想到bash會以同樣的方式處理&&。 – histumness 2013-02-12 20:18:22