In Bezug auf die Off-Topicness war Bash, als ich das letzte Mal nachgesehen habe, immer noch eine Programmiersprache, aber ich habe mich vorher geirrt und es könnte sich um getrocknete Früchte handeln.
Steve K
Es ist so, und würden Sie eine Frage zu einem bestimmten Verhalten oder dem richtigen Weg stellen, um eine bestimmte Sache zu tun, wäre dies sicherlich ein Thema. Dies fällt in eine grauere Kategorie von "Fragen zur Syntax einer Sprache", die für mich nicht so eindeutig eine "Programmier" -Frage ist.
Etan Reisner
4
Bash ist in gewisser Weise trocken und in gewisser Weise süß. Am Ende des Tages ist es sehr angenehm und verdaulich. Es kann jedoch nicht leicht von Babys gestohlen werden.
Code_Monk
Antworten:
138
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?
Charlie Parker
16
@CharlieParker &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".
CDhowie
Der Befehl2 wird nur Befehl1 ausführen, der den Exit-Status Null zurückgibt , was bedeutet, dass er erfolgreich beendet wurde.
Nik
33
Befehl1 && Befehl2
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.
Befehl1; Befehl2
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.
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, dasscommand2
es nur ausgeführt wird, wenn escommand1
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.quelle
&&
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".Befehl1 && Befehl2
command1 && command2
wird ausgeführt,command2
wenn (und nur wenn) diecommand1
Ausführung erfolgreich endet. Im Unix-Jargon bedeutet dies, dass der Exit-Code / Return-Code gleich Null ist.Befehl1; Befehl2
command1; command2
wirdcommand2
nach der Ausführungcommand1
nacheinander ausgeführt. Es spielt keine Rolle, ob die Befehle erfolgreich waren oder nicht.quelle
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.quelle