Was ist der Unterschied zwischen kaufmännischem Und und Semikolon in Linux Bash ?
Beispielsweise,
$ command1 && command2
vs.
$ command1; command2
Was ist der Unterschied zwischen kaufmännischem Und und Semikolon in Linux Bash ?
Beispielsweise,
$ command1 && command2
vs.
$ command1; command2
Antworten:
Der &&
Operator ist ein boolescher UND-Operator: Wenn die linke Seite einen Exit-Status ungleich Null zurückgibt, gibt der Operator diesen Status zurück und wertet die rechte Seite nicht aus (sie schließt kurz), andernfalls wertet er die rechte Seite aus und gibt ihren Exit-Status zurück . Dies wird häufig verwendet, um sicherzustellen, dass command2
es nur ausgeführt wird, wenn es command1
erfolgreich ausgeführt wurde.
Das ;
Token trennt nur Befehle, sodass der zweite Befehl ausgeführt wird, unabhängig davon, ob der erste erfolgreich ist oder nicht.
&&
Unterscheidet sich das doppelte kaufmännische Und von einem einzelnen kaufmännischen Und &
in Bash?
&
bewirkt, dass der Befehl im Hintergrund ausgeführt wird, also ja. "Dies im Hintergrund ausführen" unterscheidet sich stark von "Diesen nächsten Befehl nur ausführen, wenn dieser andere erfolgreich ist".
command1 && command2
wird ausgeführt, command2
wenn (und nur wenn) die command1
Ausführung erfolgreich endet. Im Unix-Jargon bedeutet dies, dass der Exit-Code / Return-Code gleich Null ist.
command1; command2
wird command2
nach der Ausführung command1
nacheinander ausgeführt. Es spielt keine Rolle, ob die Befehle erfolgreich waren oder nicht.
Ersteres ist eine einfache Logik AND
mit Kurzschlussauswertung, letzteres begrenzt einfach zwei Befehle.
In der Realität wird das Ganze AND
ausgewertet , wenn das erste Programm einen Exit-Code ungleich Null zurückgibt , FALSE
und der zweite Befehl wird nicht ausgeführt. Letzterer führt sie einfach beide der Reihe nach aus.