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 &&
?
Antworten:
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&&
.quelle
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.Wenn Sie dies auf einem interaktiven Terminal (anstelle eines Skripts) ausführen, können Sie
fg
den Hintergrundbefehl wieder in den Fokus rücken oderjobs
eine Liste der Hintergrundaufgaben anzeigen.quelle