&
,
;
, &&
,
oder ||
geschrieben wird (oder zumindest zwischen aufeinanderfolgende
Pipelines). Hinter der letzten Pipeline ist allerdings nur &
,
;
oder ein Zeilenvorschub zulässig.
Dabei haben &
und ;
gleiche Priorität beim
Zusammenfassen, und zwar eine niedrigere als &&
und
||
(die auch wieder gleichen Vorrang haben).
Zwei mit ;
getrennte Pipelines werden in der angegebenen
Reihenfolge abgearbeitet (von links nach rechts). Die rechts stehende
wird erst gestartet, wenn die links stehende beendet ist (unabhängig
vom Rückgabewert der linken Pipeline). Das Ergebnis der linken
Pipeline wird verworfen, nur die ganz rechts in einer solchen Liste
stehende Pipeline liefert den Rückgabewert des Gesamtausdrucks.
Eine mit &
beendete Pipeline wird als Hintergrundprozeß
gestartet; ihr Rückgabewert kann nicht verwertet werden. Stattdessen
wird der Wert 0 angenommen.
Sind zwei Pipelines mit dem Operator &&
getrennt, dann wird
erst die linke Seite ausgeführt und es wird auf ihr Ende
gewartet. Falls sie dann den Wert 0 (also erfolgreich)
liefert, wird die rechte Seite gestartet. Rückgabewert des
Gesamtausdrucks ist 0, wenn beide Teilausdrücke 0
lieferten (logisches UND,
short circuit evaluation;
siehe dazu auch test-Ausdrücke, true, false).
Analog wird bei ||
der linke Ausdruck ausgewertet; nur wenn er
einen Wert ungleich 0 liefert, wird der rechte ausgeführt. Das
Ergebnis ist 0, wenn mindestens einer der beiden 0 ergab
(logisches ODER).
AnyWare@Wachtler.de