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 command2es nur ausgeführt wird, wenn es command1erfolgreich 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 && command2wird ausgeführt, command2wenn (und nur wenn) die command1Ausführung erfolgreich endet. Im Unix-Jargon bedeutet dies, dass der Exit-Code / Return-Code gleich Null ist.
command1; command2wird command2nach der Ausführung command1nacheinander ausgeführt. Es spielt keine Rolle, ob die Befehle erfolgreich waren oder nicht.
Ersteres ist eine einfache Logik ANDmit Kurzschlussauswertung, letzteres begrenzt einfach zwei Befehle.
In der Realität wird das Ganze ANDausgewertet , wenn das erste Programm einen Exit-Code ungleich Null zurückgibt , FALSEund der zweite Befehl wird nicht ausgeführt. Letzterer führt sie einfach beide der Reihe nach aus.