====== LU06a - Einführung in Selektionen in Bash ====== {{https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_006_000.htm|Shell Prog: Kapitel 4.1 - 4.3}} Selektionen (auch Kontrollstrukturen genannt) ermöglichen es, in Bash-Skripten Entscheidungen zu treffen und den Programmfluss basierend auf Bedingungen zu steuern. Die beiden häufigsten Mechanismen dafür sind **`if`-Bedingungen** und **`case`-Anweisungen**. ===== `if`-Bedingungen ===== Die **`if`-Anweisung** wird verwendet, um Code auszuführen, wenn eine Bedingung wahr ist. ==== Grundstruktur ==== if [ Bedingung ]; then # Befehle, falls Bedingung wahr ist elif [ andere Bedingung ]; then # Befehle, falls andere Bedingung wahr ist else # Befehle, falls keine Bedingung wahr ist fi **Beispiel:** #!/bin/bash zahl=10 if [ $zahl -gt 5 ]; then echo "Die Zahl ist größer als 5" elif [ $zahl -eq 5 ]; then echo "Die Zahl ist genau 5" else echo "Die Zahl ist kleiner als 5" fi **Wichtige Operatoren:** * **Zahlen:** * `-eq`: gleich * `-ne`: ungleich * `-lt`: kleiner als * `-le`: kleiner oder gleich * `-gt`: größer als * `-ge`: größer oder gleich * **Zeichenketten:** * `=`: gleich * `!=`: ungleich * `-z`: leer * `-n`: nicht leer ===== `case`-Anweisungen ===== Die **`case`-Anweisung** ist nützlich, wenn Sie mehrere Bedingungen basierend auf einem einzigen Wert prüfen möchten. ==== Grundstruktur ==== case Variable in Muster1) # Befehle für Muster1 ;; Muster2) # Befehle für Muster2 ;; *) # Standardfall (wenn nichts passt) ;; esac **Beispiel:** #!/bin/bash farbe="blau" case $farbe in "rot") echo "Die Farbe ist rot" ;; "blau") echo "Die Farbe ist blau" ;; *) echo "Unbekannte Farbe" ;; esac ===== Vergleich von `if` und `case` ===== ^ ^ `if`-Bedingungen ^ `case`-Anweisungen ^ | **Nützlichkeit** | Für numerische oder logische Vergleiche | Für Mustervergleiche | | **Lesbarkeit** | Schwer lesbar bei vielen Bedingungen | Einfach bei vielen Optionen | ===== Logische Operatoren in Selektionen ===== Bedingungen können kombiniert werden mit: * **`&&`**: UND * **`||`**: ODER **Beispiel:** #!/bin/bash zahl=10 if [ $zahl -gt 5 ] && [ $zahl -lt 20 ]; then echo "Die Zahl liegt zwischen 5 und 20" else echo "Die Zahl liegt außerhalb des Bereichs" fi ===== Zusammenfassung ===== * Verwenden Sie **`if`**, wenn Sie logische oder numerische Bedingungen prüfen möchten. * Nutzen Sie **`case`**, um mehrere Werte in einer übersichtlichen Weise zu prüfen. * Kombinieren Sie Bedingungen mit **`&&`** und **`||`**, um komplexe Entscheidungen zu treffen. ---- {{tag>M122-LU06}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Marcel Suter