Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Willkommen zum dritten Artikel unserer technischen Wiki-Serie über Linux und Bash-Programmierung!
Nachdem wir in den vorherigen Beiträgen die Grundlagen des Erstellens und Ausführens von Bash-Skripten sowie die Verwendung von Variablen kennengelernt haben, widmen wir uns heute den Kontrollstrukturen in Bash. Kontrollstrukturen sind wesentliche Bausteine der Programmierung, die es dir ermöglichen, den Ablauf deines Skripts zu steuern und auf verschiedene Bedingungen zu reagieren.
Was sind Kontrollstrukturen?
Kontrollstrukturen in Bash ermöglichen es dir, Entscheidungen zu treffen, Code basierend auf Bedingungen auszuführen und Aktionen zu wiederholen. Die wichtigsten Kontrollstrukturen, die wir in diesem Artikel behandeln werden, sind:
Jede dieser Strukturen hat ihre eigenen Anwendungsfälle und Besonderheiten, die wir im Detail erkunden werden. Lass uns ohne weitere Umschweife in die Welt der Bash-Kontrollstrukturen eintauchen!
Die if-else Anweisung ist eine der grundlegendsten Kontrollstrukturen in Bash. Sie ermöglicht es dir, Code basierend auf einer oder mehreren Bedingungen auszuführen.
Syntax:
Die einfachste Form der if-Anweisung sieht so aus:
if [ Bedingung ]; then
# Code, der ausgeführt wird, wenn die Bedingung wahr ist
fi
Beachte die eckigen Klammern um die Bedingung und das Semikolon vorthen
. Dasfi
am Ende schließt die if-Anweisung ab.
Hier ein einfaches Beispiel:
#!/bin/bash
alter=18
if [ $alter -ge 18 ]; then
echo "Du bist volljährig."
fi
In diesem Beispiel wird die Nachricht nur ausgegeben, wenn die Variable alter größer oder gleich 18 ist.
Oft möchtest du auch Code ausführen, wenn die Bedingung nicht erfüllt ist. Dafür verwendest du die if-else Struktur:
if [ Bedingung ]; then
# Code, der ausgeführt wird, wenn die Bedingung wahr ist
else
# Code, der ausgeführt wird, wenn die Bedingung falsch ist
fi
Beispiel:
#!/bin/bash
alter=16
if [ $alter -ge 18 ]; then
echo "Du bist volljährig."
else
echo "Du bist minderjährig."
fi
Für mehrere Bedingungen kannst du elif
(else if) verwenden:
if [ Bedingung1 ]; then
# Code für Bedingung1
elif [ Bedingung2 ]; then
# Code für Bedingung2
else
# Code, wenn keine Bedingung zutrifft
fi
Beispiel:
#!/bin/bash
note=85
if [ $note -ge 90 ]; then
echo "Sehr gut!"
elif [ $note -ge 80 ]; then
echo "Gut!"
elif [ $note -ge 70 ]; then
echo "Befriedigend."
else
echo "Verbesserungswürdig."
fi
In Bash gibt es verschiedene Vergleichsoperatoren für Zahlen und Zeichenketten:
-eq
: gleich-ne
: ungleich-gt
: größer als-ge
: größer oder gleich-lt
: kleiner als-le
: kleiner oder gleich=
: gleich!=
: ungleich-z
: Zeichenkette ist leer-n
: Zeichenkette ist nicht leerBeispiel für Zeichenkettenvergleich:
#!/bin/bash
name="Max"
if [ "$name" = "Max" ]; then
echo "Hallo Max!"
elif [ -z "$name" ]; then
echo "Der Name ist leer."
else
echo "Hallo, wie heißt du?"
fi
Die case
Anweisung ist nützlich, wenn du viele mögliche Bedingungen für eine Variable hast. Sie ist oft übersichtlicher als verschachtelte if-elif-else Strukturen.
Syntax:
case $variable in
muster1)
# Code für muster1
;;
muster2)
# Code für muster2
;;
*)
# Standard-Code, wenn kein Muster passt
;;
esac
Beispiel:
#!/bin/bash
fruit="Apfel"
case $fruit in
"Apfel")
echo "Äpfel sind rot oder grün."
;;
"Banane")
echo "Bananen sind gelb."
;;
"Orange")
echo "Orangen sind orange."
;;
*)
echo "Unbekannte Frucht."
;;
esac
For-Schleifen in Bash werden verwendet, um eine Aktion für eine bestimmte Anzahl von Iterationen oder für jedes Element in einer Liste auszuführen.
Syntax
for variable in liste
do
# Code, der für jedes Element ausgeführt wird
done
Beispiel mit einer Liste von Zahlen:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Nummer $i"
done
Du kannst auch Sequenzen mit dem Befehl seq
generieren:
#!/bin/bash
for i in $(seq 1 5)
do
echo "Nummer $i"
done
For-Schleifen sind besonders nützlich, um über Dateien in einem Verzeichnis zu iterieren:
#!/bin/bash
for file in *.txt
do
echo "Verarbeite Datei: $file"
# Hier könntest du weitere Aktionen mit der Datei durchführen
done
While-Schleifen führen einen Codeblock aus, solange eine Bedingung wahr ist. Until-Schleifen führen einen Codeblock aus, bis eine Bedingung wahr wird.
Syntax:
while [ Bedingung ]
do
# Code, der ausgeführt wird, solange die Bedingung wahr ist
done
Beispiel:
#!/bin/bash
count=1
while [ $count -le 5 ]
do
echo "Durchlauf $count"
count=$((count + 1))
done
Syntax:
until [ Bedingung ]
do
# Code, der ausgeführt wird, bis die Bedingung wahr wird
done
Beispiel:
#!/bin/bash
count=1
until [ $count -gt 5 ]
do
echo "Durchlauf $count"
count=$((count + 1))
done
Um dein Verständnis der Kontrollstrukturen zu festigen, hier eine Übungsaufgabe.
Schreibe ein Bash-Skript, das:
Hier ist eine mögliche Lösung:
#!/bin/bash
echo "Gib eine Zahl zwischen 1 und 10 ein:"
read number
if [ $number -lt 1 ] || [ $number -gt 10 ]; then
echo "Die Zahl muss zwischen 1 und 10 liegen."
exit 1
fi
even_count=0
odd_count=0
for i in $(seq 1 $number)
do
if [ $((i % 2)) -eq 0 ]; then
echo "$i ist gerade"
even_count=$((even_count + 1))
else
echo "$i ist ungerade"
odd_count=$((odd_count + 1))
fi
done
echo "Zusammenfassung:"
echo "Gerade Zahlen: $even_count"
echo "Ungerade Zahlen: $odd_count"
Kontrollstrukturen sind das Rückgrat jedes Bash-Skripts. Sie ermöglichen es dir, komplexe Logik zu implementieren und deine Skripte dynamisch und anpassungsfähig zu gestalten. Mit if-else Anweisungen kannst du Entscheidungen treffen, case Anweisungen helfen dir, übersichtlich zwischen verschiedenen Optionen zu wählen, und Schleifen ermöglichen es dir, Aktionen zu wiederholen und über Daten zu iterieren.
In diesem Artikel haben wir die grundlegenden Kontrollstrukturen in Bash behandelt: if-else Anweisungen, case Anweisungen, for Schleifen sowie while und until Schleifen. Jede dieser Strukturen hat ihre eigenen Stärken und Anwendungsfälle. Mit der Zeit und durch Übung wirst du ein Gefühl dafür entwickeln, wann du welche Struktur am besten einsetzt.
Denk daran, dass gute Bash-Skripte nicht nur funktionieren, sondern auch lesbar und wartbar sein sollten. Verwende aussagekräftige Variablennamen, kommentiere deinen Code und strukturiere ihn sauber. Je komplexer deine Skripte werden, desto wichtiger wird es, diese Prinzipien zu beachten.
In unserem nächsten Artikel werden wir uns mit Funktionen in Bash beschäftigen – einem mächtigen Werkzeug, um deinen Code zu organisieren und wiederzuverwenden.
Bis dahin, happy scripting!