2013-07-17 25 views

回答

8
cmd1 && cmd2 && cmd3 

說明

執行cmd1。如果失敗,將不會執行cmd2cmd3

爲什麼?由於邏輯上與別的相與總是等於,所以如果cmd1回報沒有必要評價cmd2cmd3。並且通過類似推理,如果cmd1成功並且cmd2失敗,請不要執行cmd3

注意

只是爲了讓事情變得更加混亂,POSIX系統(如Linux和Unix變種)爲成功和非零返回0 失敗

所以,當我說失敗上述

  • = 非零 = 失敗

  • 真正 = = 成功

爲什麼?因爲使用返回碼的數值表示不同的失敗碼。

例如,

$ ls /root 
ls: cannot open directory /root: Permission denied 
$ echo $? 
2 
$ asdf 
asdf: command not found... 
$ echo $? 
127 
$ ls/
bin boot data dev etc home lib ... 
$ echo $? 
0 

ls返回 「1」 小的問題和 「2」 爲更嚴重的問題。 bash shell返回「127」表示「command not found」,ls /返回「0」表示成功

+1

@ user1080552爲了說明這個原因的原因,「&&」是邏輯或者是「短路」。也就是說,它從左到右評估,一旦它評估任何部分爲假,它知道整個結果將是假的,因此它會停止。 – jam

+1

除'&&'外,還有'||' - 'cmd1 ||如果'cmd1'失敗,cmd2'運行'cmd2'。 – Yossarian

+1

@jam你的意思是「合乎邏輯的」。 –

相關問題