Kommando-Trenner
- Kommando-Trenner bestimmen, wie mehrere Befehle in einer Zeile ausgeführt werden.
- Sie steuern, ob ein nachfolgender Befehl immer, nur bei Erfolg oder nur bei Fehler ausgeführt wird.
- Damit lassen sich einfache logische Abläufe direkt in einer Befehlszeile darstellen.
Grundprinzip
- Bash-Kommandos liefern nach ihrer Ausführung einen Rückgabewert (Exit-Status).
- Dieser Exit-Status entscheidet, ob nachfolgende Befehle mit ';', '&&' oder '||' ausgeführt werden.
Überblick
| Trenner |
Bedeutung |
Ausführungsbedingung
|
| ; |
Nacheinander |
Immer, unabhängig vom Ergebnis
|
| && |
UND-Verknüpfung |
Nur wenn das vorherige Kommando erfolgreich war
|
|
|
ODER-Verknüpfung |
Nur wenn das vorherige Kommando fehlschlug
|
Beispiel – Semikolon (;)
- ls /etc ; echo "Liste fertig" ; pwd
Ausgabe:
(Inhalt von /etc)
Liste fertig
/home/thomas
Beispiel – UND-Verknüpfung (&&)
- mkdir /tmp/test && echo "Verzeichnis wurde angelegt."
Beispiel – ODER-Verknüpfung (||)
- cd /nichtda || echo "Verzeichnis existiert nicht."
Kombination von && und ||
- [ -f /etc/passwd ] && echo "Datei existiert" || echo "Datei fehlt"
Rückgabewert prüfen
- Der Exit-Status des letzten Kommandos kann mit 'echo $?' angezeigt werden.
- ls /etc > /dev/null
- echo $?
0
- ls /nichtda > /dev/null
- echo $?
2
Beispiel – kurze logische Kette
- ping -c1 10.0.0.1 > /dev/null 2>&1 && echo "Host erreichbar" || echo "Host nicht erreichbar"
Ausgabe:
Host erreichbar
Hinweise
- ';' – führt Kommandos unabhängig voneinander aus.
- '&&' – führt das nächste Kommando nur bei Erfolg aus (Exit-Code = 0).
- '||' – führt das nächste Kommando nur bei Fehler aus (Exit-Code ≠ 0).
- Diese Operatoren können beliebig kombiniert werden.
- Der Exit-Status ('$?') ist wichtig für automatisierte Abläufe und Skripte.
Aufgaben
- Führen Sie drei Kommandos (date, whoami, pwd) in einer Zeile aus.
- Erstellen Sie eine Kommando-Kette, die ein Verzeichnis anlegt und bei Erfolg eine Meldung ausgibt.
- Erstellen Sie eine zweite Kette, die bei Fehlschlag eine Fehlermeldung ausgibt.
- Prüfen Sie nach jedem Befehl den Exit-Status mit 'echo $?'.
- Kombinieren Sie '&&' und '||' zu einem Ausdruck, der je nach Ergebnis "OK" oder "Fehler" ausgibt.