2009-07-12 71 views

回答

5

||幾乎是'或'運算符。

在上面的代碼示例中,它將首先運行less /tmp/manual,如果它返回的值不是true,它將運行read。如果第一個命令返回一個真值,則由於短路而不執行讀取命令。

感謝Michiel:請注意,運算符不是交換性的,因此它不是數學OR。

+3

@MitMaro這是一個挑剔的問題,但是您描述的行爲並不等同於邏輯或。一個真正的「或」是可交換的,即(a/b)=(b \/a)。 – 2009-07-12 21:43:00

+0

@Michiel:你的觀點非常好! - 我很困惑,因爲我的兩個命令都是成功的,但只有第一個命令運行。 ---這表明我可以刪除我的代碼的最後一部分。 – 2009-07-12 22:25:05

3

MitMaro說了些什麼。這是一個shell的參數,在這種情況下是/ bin/sh。 (從技術上講,這不是一個「參數」(這是一個不同的術語),但它是殼的「語法」的一部分。)

有關詳細信息,請參閱man page on sh。您要查找的是「列表」部分。

段:

一個OR序列的執行

command1 || command2 

命令2的形式,當且僅當是command1返回非零 退出狀態。

AND和OR列表的返回狀態是在列表中執行的最後一個 命令的退出狀態。