Einfache Verzweigungen
Version vom 17. Oktober 2025, 15:18 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Verzweigungen = == Kurzlogische Verzweigungen (&& und ||) == *Kurzlogische Verzweigungen nutzen den Rückgabewert (Exit-Status) eines Befehls, um Folgeakti…“)
Verzweigungen
Kurzlogische Verzweigungen (&& und ||)
- Kurzlogische Verzweigungen nutzen den Rückgabewert (Exit-Status) eines Befehls, um Folgeaktionen direkt in einer Zeile auszuführen.*
- Dadurch können einfache Prüfungen und Reaktionen kompakt geschrieben werden, ohne die if-Struktur zu verwenden.*
- Grundprinzip
- && (UND): führt den folgenden Befehl nur aus, wenn der vorherige erfolgreich war (Exit-Status 0).
- || (ODER): führt den folgenden Befehl nur aus, wenn der vorherige nicht erfolgreich war (Exit-Status ≠ 0).
- Beispiele
- [ -f /etc/passwd ] && echo "Datei existiert"
Datei existiert
- [ -d /root ] || echo "Verzeichnis /root existiert nicht"
Verzeichnis /root existiert nicht
- [ "$USER" = "root" ] && echo "Administrator" || echo "Normaler Benutzer"
Normaler Benutzer
- Überprüfung des Rückgabewerts
- echo $?
zeigt den Exit-Status des zuletzt ausgeführten Befehls an. 0 = wahr, ≠0 = falsch
- Hinweise
- Besonders nützlich für Einzeiler und kurze Bedingungen.
- Bei komplexeren Bedingungen sollte die if-Struktur verwendet werden.
- Die logischen Operatoren basieren ausschließlich auf dem Exit-Status des vorherigen Kommandos.
Strukturelle Verzweigungen mit if / elif / else
- Mit if können ganze Befehlsblöcke abhängig von Bedingungen ausgeführt werden.*
- Die Bash prüft die angegebene Bedingung – ist sie wahr (Exit-Status 0), werden die nachfolgenden Befehle im Block ausgeführt.*
- Syntax
if [ Bedingung ]; then Befehle elif [ andere Bedingung ]; then Befehle else Befehle fi
- Einfaches Beispiel
if [ "$USER" = "root" ]; then echo "Administrator" else echo "Normaler Benutzer" fi
Ausgabe: Normaler Benutzer
- Beispiel mit elif
if [ "$USER" = "root" ]; then echo "Administrator" elif [ "$USER" = "thomas" ]; then echo "Willkommen Thomas" else echo "Unbekannter Benutzer" fi
Ausgabe: Willkommen Thomas
- Hinweise
- Jede Bedingung liefert einen Exit-Status, der von if ausgewertet wird.
- Der Befehl nach dem ersten zutreffenden Vergleich wird ausgeführt, danach verlässt die Shell die Struktur.
- Mehrere elif-Zweige sind möglich, aber nur ein else-Zweig.
- Die Syntax then kann auch in einer neuen Zeile oder mit Semikolon ; nach der Bedingung stehen.
Aufgaben
- Erstellen Sie eine Bedingung, die prüft, ob eine Datei /etc/passwd existiert, und geben Sie eine passende Meldung aus.*
- Schreiben Sie eine Bedingung, die prüft, ob eine Variable leer ist oder nicht, und geben Sie entsprechend „leer“ oder „nicht leer“ aus.*
- Erstellen Sie eine if-Struktur, die zwischen drei möglichen Benutzernamen unterscheidet (root, thomas, andere).*
- Bauen Sie die erste Aufgabe als Einzeiler mit && und || um.*