Aufeinanderfolgende Befehle

13

Ist es richtig anzunehmen, dass ;Bash beim Verbinden von zwei Befehlen in einer Zeile immer wartet, bis der erste Befehl beendet wurde, bevor der zweite Befehl ausgeführt wird? Ebenso wartet Bash in einem Shell-Skript, das zwei verschiedene Befehle in verschiedenen Zeilen enthält, immer, bis der Befehl in der ersten Zeile beendet wurde, bevor der Befehl in der zweiten Zeile ausgeführt wird.

Wenn dies der Fall ist, gibt es eine Möglichkeit, zwei Befehle in einer Zeile oder in einem Skript auszuführen, sodass der zweite Befehl nicht wartet, bis der erste Befehl beendet ist?

Entsprechen verschiedene Zeilen in einem Shell-Skript auch separaten Zeilen, die durch ;oder verbunden sind &&?

EmmaV
quelle
1
Sie könnten interessiert sein an Was sind die Steuer- und Umleitungsoperatoren der Shell? .
terdon

Antworten:

25

Sie haben Recht, Befehle in Skripten werden standardmäßig nacheinander ausgeführt.

Sie können einen Befehl im Hintergrund ausführen, indem Sie ihm &ein einzelnes kaufmännisches Und hinzufügen.

Befehle in separaten Zeilen entsprechen Befehlen, die ;standardmäßig mit verknüpft sind. Wenn Sie Ihre Shell anweisen, bei Exit-Codes ungleich Null ( set -e) abzubrechen , wird das Skript ausgeführt, als ob alle Befehle mit verknüpft wären &&.

Stephen Kitt
quelle
2

Um Ihre zweite Frage zu beantworten, können Sie &einen Befehl im Hintergrund starten und mit dem Skript fortfahren, ohne darauf zu warten, dass es beendet wird.

commandA & commandB

Wenn Sie dies auf einem interaktiven Terminal (anstelle eines Skripts) ausführen, können Sie fgden Hintergrundbefehl wieder in den Fokus rücken oder jobseine Liste der Hintergrundaufgaben anzeigen.

Melcer
quelle