Einführung in die Bash-Programmierung
Da ich immer mal wieder ein Bashscript schreibe, habe ich mir gedacht, dass ich heute mal eine kleine Einführung in die Bash-Programmierung gebe. Die Grundbefehle eines Linux-Systems sind nach dem Motto “Schreibe ein Programm, das nur eine Aufgabe macht – diese aber perfekt” konstruiert, sodass sich aus den vielen einzelnen Befehlen auch mächtige Programme “zusammenbauen” lassen. Nicht umsonst werden die Grundbefehle in vielen Büchern als “Baukasten” bezeichnet.
Variablen
Die Benutzung von Variablen ist unter Linux sehr einfach. Verwende einfach folgende Syntax, um Variablen zu deklarieren:
Variable=Wert
Die Variable kann danach über
$Variable
im Script angesprochen werden.
Parameter
Häufig ist es sinnvoll, Parameter an ein Bashscript übergeben zu können. Diese werden fortlaufend duchnummeriert:
$1 (Erster Parameter) $2 (Zweiter Parameter)
In diesem Zusammenhang ist auch nicht ganz uninteressant zu wissen, dass es die Variable $# gibt, mit der man die Anzahl der übergebenen Parameter auslesen kann.
$# (Anzahl der Parameter)
Bedingungen
Diese folgenden Bedingungen benötigst du für die darauf folgenden Abfragen.
| Ausdruck | Erklärung | Beispiel |
| -d <Verzeichnis> | wahr, wenn das Verzeichnis existiert | -d /backup |
| -f <Datei> | wahr, wenn die Datei existiert | -f /var/log/mail.info |
| -n <Zeichenkette> | wahr, wenn die Zeichenkette nicht leer ist | -n “$variable” |
| “<Zeichenkette1>” = “<Zeichenkette2>” | wahr, wenn Zeichenketten übereinstimmen | “$variable” = “Beispiel” |
| “<Zeichenkette2>” != “<Zeichenkette2>” | wahr, wenn beide Zeichenketten unterschiedlich sind | “$variable” != “Beispiel” |
| <Zahl1> -eq <Zahl2> | wahr, wenn beide Zahlen gleich (equal) sind | $zahl -eq 5 |
| <Zahl1> -ne <Zahl2> | wahr, wenn beide Zahlen ungleich (not equal) sind | $zahl -ne 6 |
| <Zahl1> -lt <Zahl2> | wahr, wenn die erste Zahl kleiner (lower than) als die Zweite ist | $zahl -lt 7 |
| <Zahl1> -gt <Zahl2> | wahr, wenn die erste Zahl größer (greater than) als die Zweite ist | $zahl -gt 8 |
| ! Bedingung | Negierung der Bedingung | ! -f datei.txt |
Neben diesen Bedingungen gibt es noch eine Vielzahl weiterer Bedingungen. Eine schöne Liste findet man bei der TU Chemnitz.
if-Abfrage
if [ Ausdruck ] then # Anweisungen fi
Beispiel:
if [ "$stadt" = "Kiel" ] then echo "Schleswig-Holstein" fi
if-else-Abfrage
if [ Ausdruck ] then # Anweisungen else # Anweisungen fi
Beispiel:
if [ "$stadt" = "Kiel" ] then echo "Schleswig-Holstein" else echo "Woanders" fi
case-Abfrage (switch)
case "Variable" in
"Wert 1")
# Anweisungen
;;
"Wert 2")
# Anweisungen
;;
*)
# Anweisungen
;;
esac
Beispiel:
case "$promi" in "Atze Schröder") echo "Komiker" ;; "Tux") echo "Das Linux Maskottchen" ;; *) echo "Irgend ein anderer Promi" ;; esac
while-Schleife
while [ Bedingung ] do # Anweisungen done
Beispiel:
zaehler=0 while [ $zaehler -lt 10 ] do echo "Durchlauf $zaehler" zaehler=$(($zaehler+1)) done
for-Schleife
for <Variable> in <mehrere Zeichenketen> do # Anweisungen done
Beispiel:
for buchstabe in alpha beta gamma delta do echo $buchstabe done
Abschlussbemerkung
Durch Kombination der hier vorgestellten Abfragen und Schleifen zusammen mit den zur Verfügung stehenden Anwendungen können sehr mächtige Programme mit den Bordmitteln der Bash geschrieben werden.
Quellen und weiterführende Links
Veröffentlicht am 21.03.2011

Hampa schrieb am 23. März 2011
Hallo Patrick. Vielen Dank für die Übersicht. Zur Inkrementierung der Variable “zaehler” habe ich eine Frage.
Welche Shell setzt Du denn ein. Bei mir funktioniert der Ausdruck zaehler++ nämlich nicht. Ich muss das auf zaehler=$(($zaehler+1)) ändern damit das Beispiel auch das macht, was es soll.
Patrick schrieb am 23. März 2011
Auweia, da war ich wohl neben der Spur, du hast Recht
Wird gleich geändert. Wie der Artikel-Name schon sagt, setze ich die Bash ein
Hampa schrieb am 23. März 2011
Jetzt wo Du’s erwähnst.