Im vorherigen Beitrag haben wir die Grundlagen des Bash-Scriptings kennengelernt. Nun gehen wir einen Schritt weiter und nutzen Bedingungen für Entscheidungen sowie Schleifen, um Befehle automatisch wiederholt auszuführen.
Diese Konzepte sind essenziell, um komplexere Automatisierungen unter Linux umzusetzen.
1. Bedingungen mit if
Der klassische Weg, Entscheidungen in Bash-Skripten umzusetzen, ist die if-Abfrage.
Syntax
if [ Bedingung ]; then
Befehl(e)
fi
Beispiel: Verzeichnis prüfen
#!/bin/bash
if [ -d "/home/user/Dokumente" ]; then
echo "Verzeichnis existiert."
else
echo "Verzeichnis nicht gefunden."
fi
2. Vergleichsoperatoren
Operator | Bedeutung | Beispiel |
---|---|---|
-eq | Gleich | [ "$a" -eq "$b" ] |
-ne | Ungleich | [ "$a" -ne "$b" ] |
-lt | Kleiner als | [ "$a" -lt "$b" ] |
-gt | Größer als | [ "$a" -gt "$b" ] |
-le | Kleiner oder gleich | [ "$a" -le "$b" ] |
-ge | Größer oder gleich | [ "$a" -ge "$b" ] |
= oder == | Zeichenketten gleich | [ "$str1" = "$str2" ] |
!= | Zeichenketten ungleich | [ "$str1" != "$str2" ] |
3. Logische Operatoren
- UND:
[ "$a" -gt 5 ] && [ "$b" -lt 10 ]
- ODER:
[ "$a" -gt 5 ] || [ "$b" -lt 10 ]
- NICHT:
[ ! -f datei.txt ]
4. Schleifen – wiederholte Abläufe
4.1 for-Schleife
for i in 1 2 3 4 5; do
echo "Durchlauf $i"
done
Mit Zahlenbereich:
for i in {1..5}; do
echo "Zahl: $i"
done
Über Dateien iterieren:
for file in *.txt; do
echo "Datei: $file"
done
4.2 while-Schleife
i=1
while [ $i -le 5 ]; do
echo "Zahl: $i"
i=$((i+1))
done
4.3 until-Schleife
Läuft, bis eine Bedingung wahr wird:
i=1
until [ $i -gt 5 ]; do
echo "Zahl: $i"
i=$((i+1))
done
5. case – Mehrfachverzweigungen
Der Befehl case
ist ideal für Menüs oder mehrere Entscheidungswege:
echo "Bitte eine Zahl eingeben:"
read zahl
case $zahl in
1) echo "Eins";;
2) echo "Zwei";;
3) echo "Drei";;
*) echo "Unbekannte Zahl";;
esac
6. Praxisbeispiele
- Backup nur erstellen, wenn Verzeichnis existiert
#!/bin/bash
ziel="/home/user/backup"
if [ -d "$ziel" ]; then
tar -czf backup.tar.gz "$ziel"
echo "Backup erstellt."
else
echo "Backup-Verzeichnis nicht gefunden!"
fi
- Automatisierte Dateiverarbeitung
#!/bin/bash
for file in *.log; do
echo "Bearbeite $file"
gzip "$file"
done
- Menü mit case
#!/bin/bash
echo "Option wählen: (1) Start (2) Stop"
read auswahl
case $auswahl in
1) echo "Dienst startet";;
2) echo "Dienst stoppt";;
*) echo "Ungültige Eingabe";;
esac
7. Zusammenfassung
Konstrukt | Zweck | Beispiel |
---|---|---|
if ... else | Entscheidungen treffen | [ -f datei.txt ] |
for | Wiederholte Abläufe | for i in {1..5} |
while | Schleifen mit Bedingung | while [ $i -le 5 ] |
until | Bis Bedingung erfüllt ist | until [ $i -gt 5 ] |
case | Mehrfachentscheidungen | case $var in ...) |
Schreibe einen Kommentar