Bash-Scripting Grundlagen

5 Kernkonzepte
Die wichtigsten Grundlagen für Bash-Skripte: Shebang · Variablen · Bedingungen · Schleifen · Funktionen Mit diesen Grundlagen können Sie eigene Bash-Skripte schreiben, um Aufgaben zu automatisieren, Systeme zu verwalten und Prozesse zu vereinfachen.

Shebang – Interpreter festlegen

#!/bin/bash
#!/bin/bash

Das Shebang (#!) in der ersten Zeile eines Skripts legt fest, welcher Interpreter das Skript ausführen soll.

Häufige Shebangs

Shebang Beschreibung
#!/bin/bash Bash-Shell (Standard)
#!/bin/sh POSIX-kompatible Shell (einfacher)
#!/usr/bin/env bash Sucht Bash im PATH (portabler)
#!/usr/bin/python3 Python-Skript
Beispiel
#!/bin/bash
# Mein erstes Bash-Skript
echo "Hallo Welt!"
# Skript ausführbar machen und ausführen
chmod +x script.sh
./script.sh
Ausgabe:
Hallo Welt!
Tipp: Verwenden Sie #!/usr/bin/env bash für maximale Portabilität. So wird die Bash-Version aus dem PATH des Nutzers verwendet.

Variablen – Daten speichern

name="Wert"
name="Wert"

Variablen speichern Werte wie Zeichenketten, Zahlen oder Pfade. Der Zugriff erfolgt mit $ vor dem Variablennamen.

Wichtige Regeln

Regel Beschreibung
name="Wert" Zuweisung (keine Leerzeichen um =)
$name Zugriff auf den Wert (mit $)
${name} Explizite Klammerung (bei Verkettung)
"$name" Mit Anführungszeichen (Leerzeichen erhalten)
Beispiele
name="Max Mustermann"
echo "Hallo $name"
datei="/var/log/syslog"
echo "Datei: ${datei}"
count=10
echo "Zähler: $count"
# Befehlsausgabe speichern
heute=$(date +%Y-%m-%d)
echo "Heute ist $heute"
Ausgabe:
Hallo Max Mustermann
Datei: /var/log/syslog
Zähler: 10
Heute ist 2026-06-21
Tipp: Verwenden Sie immer "${var}" in komplexen Strings, um Probleme mit Leerzeichen oder Sonderzeichen zu vermeiden.

Bedingungen – if / else / elif

if [ -f datei ]; then ... fi
if [ -f datei ]; then ... fi

Bedingungen (if-else) ermöglichen die Steuerung des Skriptablaufs basierend auf Prüfungen (Datei existiert? Wert ist gleich?).

Wichtige Operatoren

Operator Beschreibung
[[ -f datei ]] Prüft, ob datei existiert und eine reguläre Datei ist
[[ -d verzeichnis ]] Prüft, ob verzeichnis existiert und ein Ordner ist
[[ -z $var ]] Prüft, ob $var leer ist
[[ -n $var ]] Prüft, ob $var nicht leer ist
[[ $a == $b ]] Vergleicht zwei Werte auf Gleichheit
[[ $a != $b ]] Vergleicht zwei Werte auf Ungleichheit
[[ $a -gt $b ]] Größer als (greater than) – für Zahlen
[[ $a -lt $b ]] Kleiner als (less than) – für Zahlen
Beispiele
datei="/etc/passwd"
if [ -f "$datei" ]; then
  echo "Datei existiert"
else
  echo "Datei existiert nicht"
fi
name="Max"
if [ "$name" == "Max" ]; then
  echo "Hallo Max!"
elif [ "$name" == "Anna" ]; then
  echo "Hallo Anna!"
else
  echo "Unbekannter Benutzer"
fi
Ausgabe (erstes Beispiel):
Datei existiert
Tipp: Verwenden Sie [[ ... ]] mit doppelten Klammern für moderne Bash-Bedingungen – sie sind sicherer bei leeren Variablen.

Schleifen – for, while, until

for i in {1..5}; do ... done
for i in {1..5}; do ... done

Schleifen führen Codeblöcke wiederholt aus – für Listen, Zahlenbereiche oder solange eine Bedingung erfüllt ist.

Schleifen-Typen

Typ Beschreibung
for i in {1..5} Zahlenbereich von 1 bis 5
for datei in *.txt Dateien mit .txt-Endung durchlaufen
while [ $i -le 5 ] Führt aus, solange Bedingung wahr ist
until [ $i -gt 5 ] Führt aus, bis Bedingung wahr wird
Beispiele
# for-Schleife über Zahlen
for i in {1..5}; do
  echo "Zahl: $i"
done
# for-Schleife über Dateien
for datei in *.log; do
  echo "Log: $datei"
done
# while-Schleife
i=1
while [ $i -le 3 ]; do
  echo "Durchlauf: $i"
  i=$((i + 1))
done
Ausgabe (erste Schleife):
Zahl: 1
Zahl: 2
Zahl: 3
Zahl: 4
Zahl: 5
Tipp: Mit break können Sie eine Schleife vorzeitig beenden, mit continue springen Sie zum nächsten Durchlauf.

Funktionen – Code wiederverwenden

function name() { ... }
function name() { ... }

Funktionen fassen Codeblöcke zusammen, die mehrfach aufgerufen werden können. Sie machen Skripte modularer und besser wartbar.

Wichtige Konzepte

Konzept Beschreibung
$1, $2, ... Parameter innerhalb der Funktion
$# Anzahl der Parameter
return [Wert] Rückgabewert (0 = Erfolg)
local var Lokale Variable (nur innerhalb der Funktion)
Beispiele
# Funktion definieren
function gruss() {
  name="$1"
  echo "Hallo $name!"
}

# Funktion aufrufen
gruss "Anna"
# Funktion mit Rückgabewert
function summe() {
  a="$1"
  b="$2"
  ergebnis=$((a + b))
  return $ergebnis
}

summe 5 3
echo "Ergebnis: $?"
# Funktion mit lokalen Variablen
function test_local() {
  local name="lokal"
  echo "$name"
}
test_local
Ausgabe (erstes Beispiel):
Hallo Anna!
Tipp: Deklarieren Sie Variablen in Funktionen mit local, um Seiteneffekte im globalen Skript zu vermeiden.

Quick Summary

#!/bin/bash
Interpreter
var="Wert"
Variablen
if / else
Bedingungen
for / while
Schleifen
function()
Funktionen