2009-07-12 20 views

Antwort

5

|| ist fast "oder" Operator.

Im obigen Codebeispiel wird zuerst less /tmp/manual ausgeführt und wenn es einen Wert zurückgibt, der nicht wahr ist, wird read ausgeführt. Wenn der erste Befehl einen wahren Wert zurückgibt, wird der Lesebefehl wegen eines Kurzschlusses nicht ausgeführt.

Dank Michiel: Bitte beachten Sie, dass der Operator nicht kommutativ ist, so dass es nicht mathematisch OR ist.

+3

@MitMaro Dies ist ein Nitpick, aber das Verhalten, das Sie beschreiben, entspricht nicht einem logischen oder. Ein reelles "oder" ist kommutativ, d. H. (A \/b) = (b \/a). –

+0

@Michiel: Dein Punkt ist ausgezeichnet! - Ich war verwirrt, weil beide Befehle erfolgreich waren, aber nur der erste ausgeführt wurde. --- Das deutet darauf hin, dass ich den letzten Teil meines Codes entfernen kann. –

3

Was MitMaro sagte. Es ist ein Parameter für die Shell oder in diesem Fall/bin/sh. (Technisch ist es kein "Parameter" (das ist ein anderer Begriff), aber es ist Teil der "Grammatik" der Shell.)

Für Details können Sie die man page on sh lesen. Was Sie suchen, ist unter dem Abschnitt "Listen".

Schnipsel:

Eine ODER-Liste hat die Form

command1 || command2 

command2 ausgeführt wird, wenn und nur wenn command1 einen von Null Exit-Status zurückgibt.

Der Rückgabestatus von AND- und OR-Listen ist der Exit-Status des letzten in der Liste ausgeführten Befehls .

+0

Ich wusste nie, wo in den man pages nach diesem zu suchen. Danke GreenReign. – MitMaro