In Tutorials und Anleitungen sehe ich oft kombinierte Befehle. Zum Beispiel,
sudo apt-get update && sudo apt-get install pyrenamer
Es scheint vier mögliche Anschlüsse zu sein: &
, &&
, ||
und ;
. Obwohl der &
Konnektor für mich klar ist (er sendet einen Prozess in den Hintergrund und lässt das Terminal verfügbar), ist nicht klar, worin der Unterschied zwischen &&
und besteht ;
. Und ich wusste es nicht, ||
bis Kayas Kommentar.
Die folgenden Fragen befassen sich mit dem Unterschied zwischen den beiden Konnektoren, aber meistens in den Kommentaren:
Hier sind einige verwandte Fragen:
- Was ist der Unterschied zwischen
;
und&&
? - Wann sollten Sie sie jeweils verwenden? Es wäre schön, einige Anwendungsfälle zu sehen: Wenn ich einen Befehl ausführen und dann meinen Computer herunterfahren möchte, welchen Anschluss soll ich wählen?
- Was sind ihre Vorteile und Gefahren ? Robie Basak erwähnt in einem Kommentar zu dieser Antwort, dass ein Befehl wie
cd /somewhere_else; rm -Rf *
zum Beispiel destruktive Konsequenzen haben kann, wenn das erste Element in der Befehlskette ausfällt. - Woher kommen sie, falls relevant?
set -e
das Skript bei einem Fehler anhält, als ob alle Befehle mit verbunden wären &&
.
||
ist derselbe wie,&&
außer dass er den zweiten Befehl nur ausführt, wenn der erste mit einem Status ungleich Null (nicht erfolgreich) beendet wurde.