命令基於Rampion's command||意思是在.screenrc?
screen /bin/sh -c '/usr/bin/man `cat "[email protected]"` > /tmp/manual | less /tmp/manual || read'
|| read
並不意味着在命令或。 read
似乎是一個內置的命令,我沒有在我的OS X手冊中找到解釋。
||
在命令中的含義是什麼?
命令基於Rampion's command||意思是在.screenrc?
screen /bin/sh -c '/usr/bin/man `cat "[email protected]"` > /tmp/manual | less /tmp/manual || read'
|| read
並不意味着在命令或。 read
似乎是一個內置的命令,我沒有在我的OS X手冊中找到解釋。
||
在命令中的含義是什麼?
||
幾乎是'或'運算符。
在上面的代碼示例中,它將首先運行less /tmp/manual
,如果它返回的值不是true,它將運行read
。如果第一個命令返回一個真值,則由於短路而不執行讀取命令。
感謝Michiel:請注意,運算符不是交換性的,因此它不是數學OR。
MitMaro說了些什麼。這是一個shell的參數,在這種情況下是/ bin/sh。 (從技術上講,這不是一個「參數」(這是一個不同的術語),但它是殼的「語法」的一部分。)
有關詳細信息,請參閱man page on sh。您要查找的是「列表」部分。
段:
一個OR序列的執行
command1 || command2
命令2的形式,當且僅當是command1返回非零 退出狀態。
AND和OR列表的返回狀態是在列表中執行的最後一個 命令的退出狀態。
@MitMaro這是一個挑剔的問題,但是您描述的行爲並不等同於邏輯或。一個真正的「或」是可交換的,即(a/b)=(b \/a)。 – 2009-07-12 21:43:00
@Michiel:你的觀點非常好! - 我很困惑,因爲我的兩個命令都是成功的,但只有第一個命令運行。 ---這表明我可以刪除我的代碼的最後一部分。 – 2009-07-12 22:25:05