Immer die gleichen Befehle tippen? Das lässt sich automatisieren. Ein Bash-Skript bündelt mehrere Kommandos in einer Datei, die du mit einem Aufruf startest. In diesem Einsteiger-Guide lernst du, wie du ein Bash-Skript unter Linux erstellst – von der Shebang-Zeile über Variablen bis zu Bedingungen und Schleifen.
Wiederkehrende Aufgaben von Hand einzutippen kostet Zeit und ist fehleranfällig. Ein Bash-Skript nimmt dir diese Arbeit ab: Du fasst mehrere Befehle in einer Datei zusammen, führst sie mit einem einzigen Aufruf aus und automatisierst so Backups, Deployments oder Wartungsroutinen. In diesem Einsteiger-Guide schreibst du dein erstes Skript, machst es ausführbar und lernst die Bausteine kennen, mit denen aus einer simplen Befehlsliste ein robustes Werkzeug wird.
- Schritt 1: Die Skript-Datei anlegen
- Schritt 2: Ausführbar machen und starten
- Schritt 3: Variablen verwenden
- Schritt 4: Bedingungen (if)
- Schritt 5: Schleifen (for)
- Tipp: Skripte robuster machen
- Skripte automatisch ausführen
- Die Shebang-Zeile und Ausführbarkeit
- Robuste Skripte mit set -euo pipefail
- Variablen, Argumente und Bedingungen
- Häufige Fragen
- Warum bekomme ich „Permission denied“?
- Was ist der Unterschied zwischen sh und bash?
- Wie debugge ich ein Bash-Skript?
- Fazit
Schritt 1: Die Skript-Datei anlegen
Ein Bash-Skript ist eine einfache Textdatei, üblicherweise mit der Endung .sh. Lege sie an:
nano mein-skript.shDie erste Zeile ist die sogenannte Shebang. Sie sagt dem System, mit welchem Interpreter das Skript ausgeführt werden soll:
#!/bin/bash
echo "Hallo Welt!"Schritt 2: Ausführbar machen und starten
Bevor du das Skript starten kannst, muss es ausführbar sein. Das erledigt chmod:
chmod +x mein-skript.sh
./mein-skript.shDer Punkt-Schrägstrich ./ vor dem Namen ist nötig, weil das aktuelle Verzeichnis normalerweise nicht im Suchpfad liegt.
Schritt 3: Variablen verwenden
Variablen speichern Werte zur Wiederverwendung. Wichtig: Bei der Zuweisung keine Leerzeichen um das Gleichheitszeichen, beim Auslesen ein $ voranstellen:
#!/bin/bash
NAME="Tobias"
echo "Hallo $NAME"
# Ausgabe eines Befehls in einer Variable speichern
DATUM=$(date +%Y-%m-%d)
echo "Heute ist der $DATUM"Schritt 4: Bedingungen (if)
Mit if reagierst du auf unterschiedliche Situationen. Ein typisches Beispiel prüft, ob ein Verzeichnis existiert:
#!/bin/bash
if [ -d "/opt/backup" ]; then
echo "Backup-Ordner existiert."
else
echo "Ordner fehlt - wird erstellt."
mkdir -p /opt/backup
fiSchritt 5: Schleifen (for)
Schleifen wiederholen Aktionen. Diese for-Schleife durchläuft alle .log-Dateien im aktuellen Verzeichnis:
#!/bin/bash
for datei in *.log; do
echo "Verarbeite: $datei"
doneTipp: Skripte robuster machen
Ein bewährter Profi-Tipp ist, das Skript direkt nach der Shebang abzusichern. Diese Zeile sorgt dafür, dass das Skript bei einem Fehler abbricht, statt blind weiterzulaufen:
#!/bin/bash
set -euo pipefail-e bricht bei Fehlern ab, -u meldet nicht gesetzte Variablen und pipefail erkennt Fehler in Pipes. Das erspart dir viele unangenehme Überraschungen.
Skripte automatisch ausführen
Der eigentliche Nutzen entsteht, wenn dein Skript von selbst läuft. Dafür gibt es zwei bewährte Wege: zeitgesteuert per Cronjob oder als dauerhafter Dienst über einen systemd-Service.
Die Shebang-Zeile und Ausführbarkeit
Jedes Bash-Skript beginnt mit der sogenannten Shebang-Zeile #!/bin/bash. Sie sagt dem System, mit welchem Interpreter die Datei ausgeführt werden soll. Ohne sie weiß Linux nicht, dass es sich um ein Bash-Skript handelt. Anschließend machst du die Datei mit chmod +x skript.sh ausführbar und startest sie mit ./skript.sh.
| Aufruf | Bedeutung |
|---|---|
./skript.sh | Nutzt die Shebang-Zeile, Datei muss ausführbar sein |
bash skript.sh | Startet explizit mit Bash, Shebang optional |
source skript.sh | Führt im aktuellen Shell-Kontext aus (Variablen bleiben) |
Robuste Skripte mit set -euo pipefail
Standardmäßig läuft ein Bash-Skript nach einem Fehler einfach weiter – oft mit fatalen Folgen. Mit einer strengen Fehlerbehandlung ganz am Anfang machst du dein Skript deutlich sicherer. Die Zeile set -euo pipefail sorgt dafür, dass das Skript bei Fehlern sofort abbricht, statt im ungültigen Zustand weiterzumachen.
set -e– bricht bei jedem fehlgeschlagenen Befehl ab.set -u– behandelt nicht gesetzte Variablen als Fehler.set -o pipefail– erkennt Fehler auch innerhalb von Pipes.- Anführungszeichen um Variablen (
"$var") verhindern Probleme mit Leerzeichen.
Variablen, Argumente und Bedingungen
Der wahre Nutzen von Skripten entsteht durch Flexibilität. Über Argumente wie $1 und $2 übergibst du Werte beim Aufruf, mit if-Abfragen reagierst du auf Bedingungen. So wird aus einer starren Befehlsliste ein Werkzeug, das sich an unterschiedliche Situationen anpasst – etwa ein Backup-Skript, das den Zielordner als Argument entgegennimmt.
Für Wiederholungen nutzt du Schleifen: Eine for-Schleife arbeitet eine Liste von Dateien ab, eine while-Schleife läuft, solange eine Bedingung erfüllt ist. Kommentare mit # helfen dir und anderen, das Skript später noch zu verstehen. Für längere Ausgaben oder Menüs greifst du auf echo oder printf zurück, und mit read fragst du bei Bedarf Eingaben vom Benutzer ab.
Sobald ein Skript wächst, lohnen sich Funktionen. Sie bündeln wiederkehrende Logik unter einem Namen, machen den Ablauf lesbarer und lassen sich an mehreren Stellen aufrufen, statt Code zu kopieren. Ebenso hilfreich ist ein bewusster Umgang mit Exit-Codes: Beende dein Skript mit exit 0 bei Erfolg und einem Wert ungleich null im Fehlerfall, damit übergeordnete Skripte oder ein Cronjob erkennen können, ob der Lauf geklappt hat. Diese kleinen Gewohnheiten machen aus einem Wegwerf-Skript ein zuverlässiges Werkzeug.
Häufige Fragen
Die häufigsten Fragen von Bash-Einsteigern.
Warum bekomme ich „Permission denied“?
Dann ist die Datei noch nicht ausführbar. Mit chmod +x skript.sh gibst du ihr das Ausführungsrecht. Alternativ startest du das Skript direkt über bash skript.sh.
Was ist der Unterschied zwischen sh und bash?
sh ist eine minimalere Shell mit weniger Funktionen. Bash bietet Erweiterungen wie Arrays und [[ ]]-Tests. Nutze in der Shebang #!/bin/bash, wenn du diese Features brauchst.
Wie debugge ich ein Bash-Skript?
Starte es mit bash -x skript.sh. Der Schalter -x gibt jeden Befehl vor der Ausführung aus, sodass du genau siehst, an welcher Stelle etwas schiefläuft.
Fazit
Mit Shebang, chmod +x und den Grundbausteinen Variablen, if und for schreibst du im Handumdrehen nützliche Bash-Skripte. Mach sie mit set -euo pipefail robust und lass sie per Cron oder systemd automatisch laufen – so nimmt dir dein Server wiederkehrende Arbeit ab. Ein klassischer Anwendungsfall sind Backups, etwa deiner Docker Volumes.

