Shell & Automatisierung

Bash-Scripting lernen: dein Weg vom ersten Skript zur belastbaren Automatisierung

Die meisten Skripte scheitern nicht an Logik, sondern an Quoting und fehlender Fehlerbehandlung. Wer set -euo pipefail versteht und Variablen konsequent in Anführungszeichen setzt, hat den größten Teil der typischen Fehler hinter sich.

Hände tippen auf einer mechanischen Tastatur, Terminal-Fenster auf dem Monitor
Seit 1997 am Markt Präsenz & Live-Online 4,9 aus 503 Google-Bewertungen Auch Inhouse für dein Team
Worum es geht

Warum viele Bash-Skripte im Betrieb auseinanderfallen

Bash ist auf praktisch jedem Linux-System vorhanden, und genau deshalb landen dort Aufgaben, die niemand bewusst geplant hat: Backup-Wrapper, Deployment-Schritte, Log-Aufräumer, kleine Migrationshelfer. Solange ein Skript nur interaktiv auf der eigenen Maschine läuft, fällt kaum auf, dass es keine Fehlerbehandlung hat. Auffällig wird es erst, wenn es unbeaufsichtigt in einem systemd-Timer läuft, ein cp fehlschlägt und das Skript trotzdem mit Exit-Code 0 endet.

Die typischen Fehler sind seit Jahren dieselben. Variablen werden ohne Anführungszeichen expandiert und zerfallen an Leerzeichen im Dateinamen. Die Ausgabe von ls wird in einer Schleife geparst, statt mit find -print0 und einer while-read-Schleife zu arbeiten. Rückgabewerte werden nicht geprüft, weil Bash ohne set -e einfach weitermacht, und in einer Pipeline zählt ohne set -o pipefail nur der Exit-Code des letzten Kommandos. Ein abgebrochener Datenbank-Dump hinter einem erfolgreichen gzip bleibt so unsichtbar, bis du das Backup zurückspielen willst.

Dazu kommt die organisatorische Seite. Skripte liegen unversioniert in /usr/local/bin, haben keine Hilfe-Ausgabe und werden nur von der Person verstanden, die sie geschrieben hat. Wer Bash in einer sinnvollen Reihenfolge lernt, statt sich Schnipsel zusammenzusuchen, kommt deutlich schneller an den Punkt, an dem Skripte nachvollziehbar, testbar und im Team übergebbar sind.

Miniatur-Szene: Förderband aus Terminal-Fenstern, Zahnräder treiben es an, ein Roboterarm setzt einen Haken

Lernpfad Bash-Scripting

  1. 01 Shell-Grundlagen und Quoting
  2. 02 Variablen und Parameter
  3. 03 Schleifen und Verzweigungen
  4. 04 Funktionen und getopts
  5. 05 set -euo pipefail und trap
  6. 06 ShellCheck und Tests
Was du mitnimmst

Der Lernweg: sechs Stufen bis zum wartbaren Skript

Bash lässt sich gut in Stufen lernen, weil jede Stufe auf der vorherigen aufsetzt und für sich schon nutzbar ist. Diese Reihenfolge hat sich in unseren Shell-Kursen bewährt und deckt sich mit dem, was in der Praxis tatsächlich gebraucht wird.

Shell-Grundlagen und Quoting

Bevor du Skripte schreibst, musst du verstehen, was die Shell mit deiner Eingabe macht: Wortzerlegung, Pfadexpansion, Kommandosubstitution, der Unterschied zwischen einfachen und doppelten Anführungszeichen. Wer hier sauber arbeitet, vermeidet die Hälfte aller späteren Fehler, und die Regel lautet schlicht, Variablen immer in doppelte Anführungszeichen zu setzen.

Variablen, Parameter und Ein- und Ausgabe

Danach kommen Positionsparameter, Default-Werte über Parameter-Expansion, das Lesen von stdin und die saubere Trennung von stdout und stderr. Meldungen für Menschen gehören nach stderr, verwertbare Daten nach stdout, damit dein Skript sich in Pipelines einfügt statt sie zu stören.

Kontrollstrukturen und Schleifen

if, case, for und while sind schnell gelernt, die Fallstricke liegen in den Details: Test mit [[ ]] statt [ ], Zahlenvergleiche mit (( )), Schleifen über Dateilisten ohne ls-Parsing und der Umgang mit leeren Ergebnismengen. Hier entscheidet sich, ob ein Skript auch mit ungewöhnlichen Dateinamen funktioniert.

Funktionen, Struktur und Wiederverwendung

Ab etwa hundert Zeilen brauchst du Struktur: Funktionen mit lokalen Variablen über local, eine main-Funktion am Ende, eine usage-Ausgabe und Optionsauswertung mit getopts. So wird aus einem Ablaufprotokoll ein Werkzeug, das andere im Team ohne Rückfragen benutzen können.

Robustheit: set -euo pipefail, trap und Exit-Codes

Der Sprung von Skript zu Automatisierung passiert hier. set -euo pipefail als Grundhaltung, bewusste Ausnahmen mit || true, Aufräumen von temporären Dateien über trap ... EXIT, mktemp statt fester Pfade in /tmp und sprechende Exit-Codes für den aufrufenden Timer oder die CI-Pipeline. Dazu Logging, das im Journal auswertbar bleibt.

Qualitätssicherung mit ShellCheck und Tests

ShellCheck findet Quoting- und Logikfehler, bevor sie in Produktion auffallen, und lässt sich als Pre-Commit-Hook oder CI-Schritt einbinden. Ergänzend helfen bash -n für einen Syntax-Check, bash -x zum Nachvollziehen von Abläufen und ein einfaches Test-Framework wie bats für die Skripte, die wirklich kritisch sind.

Die Grenze kennen: wann Bash aufhört

Bash ist stark bei Prozesssteuerung, Dateioperationen und dem Verketten vorhandener Werkzeuge. Sobald du Zustand über viele Hosts verwaltest, Idempotenz brauchst oder komplexe Datenstrukturen und JSON verarbeitest, sind Ansible oder Python die ehrlichere Wahl. Ein gutes Bash-Skript weiß, wo es aufhört.

Wissen prüfen

Teste dich und finde deinen Weg

Bevor du einen Kurs buchst, lohnt sich eine ehrliche Standortbestimmung. Die Tests sind kostenlos und ohne Anmeldung.

Gut zu wissen

Häufige Fragen zu Bash-Scripting

Noch etwas offen? Wir sind ohne Warteschleife für dich da.

Frag uns direkt
Wie lange dauert es, Bash-Scripting zu lernen?
Die Grundlagen bis hin zu Schleifen und einfachen Skripten lassen sich in wenigen Tagen konzentrierter Arbeit aufbauen, in unseren Kursen sind das typischerweise drei Tage. Bis Skripte auch unbeaufsichtigt zuverlässig laufen, brauchst du zusätzlich Übung an eigenen Aufgaben, weil Fehlerbehandlung und Quoting erst im echten Betrieb wirklich sitzen.
Was bedeutet set -euo pipefail genau?
set -e bricht das Skript ab, sobald ein Kommando einen Exit-Code ungleich null liefert, set -u behandelt nicht gesetzte Variablen als Fehler statt sie leer zu expandieren, und set -o pipefail sorgt dafür, dass eine Pipeline den Exit-Code des letzten fehlgeschlagenen Kommandos zurückgibt statt den des letzten Glieds. Die Kombination ist eine sinnvolle Grundeinstellung, ersetzt aber keine bewusste Fehlerbehandlung, denn an Stellen, an denen ein Fehlschlag erwartet wird, brauchst du weiterhin eine explizite Ausnahme.
Sollte ich Bash oder lieber gleich Python lernen?
Beides hat seinen Platz und die Frage ist nicht entweder oder. Bash ist überall vorhanden und unschlagbar, wenn du bestehende Kommandozeilenwerkzeuge verkettest, Dateien bewegst oder Prozesse steuerst. Python lohnt sich, sobald Datenstrukturen, APIs, JSON-Verarbeitung oder umfangreichere Logik ins Spiel kommen. Als Administrator solltest du Bash sicher beherrschen, weil du es täglich liest, und Python als Ergänzung dazunehmen.
Brauche ich ShellCheck, wenn meine Skripte funktionieren?
Ja, denn ShellCheck findet vor allem die Fehler, die noch nicht aufgetreten sind. Typische Treffer sind fehlende Anführungszeichen, die erst bei einem Dateinamen mit Leerzeichen auffallen, verwechselte Vergleichsoperatoren und Variablen, die in einer Subshell gesetzt und außerhalb gelesen werden. Als CI-Schritt eingebunden kostet das kaum Aufwand und hält die Qualität stabil, auch wenn mehrere Leute an den Skripten arbeiten.
Welcher cmt-Kurs passt zu welchem Kenntnisstand?
Wenn du die Shell bisher nur interaktiv nutzt, ist der Kurs Linux / UNIX Shellprogrammierung Grundkurs der Einstieg. Wer bereits Skripte schreibt und sie strukturierter und robuster machen will, ist im Linux Aufbaukurs: Shell Programmierung (LPI03) richtig, der auch auf die LPIC-1 Themen einzahlt. Brauchst du Systemadministration und Scripting in einem Rutsch, deckt der Kompaktkurs Linux Systemadministration und Shell-Scripting beides ab. Alle Kurse gibt es als Präsenz- und als Live-Online-Termin.

Zuletzt geprüft am 26. Juli 2026.

Das sagen Teilnehmer

Echte Stimmen aus unseren IT-Kursen

Qualitativ sehr guter Kurs. Ruhiger und wertschätzender Umgang. Keine Informationsüberlastung.
Rückmeldung aus dem Kurs „Ansible Kompaktkurs“
Gut vorbereitete professionelle Vermittlung der komplexen Inhalte innerhalb von nur drei Tagen.
Rückmeldung aus dem Kurs „Docker Grundkurs für Einsteiger“
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.

Nächster Schritt

Bash-Scripting strukturiert lernen statt Schnipsel sammeln

Sag uns, womit du heute arbeitest und was deine Skripte leisten sollen, dann ordnen wir dich in den passenden Kurs ein, vom Shellprogrammierung Grundkurs bis zum Aufbaukurs Shell Programmierung. Auf Wunsch bauen wir die Inhalte als Inhouse-Schulung um deine eigenen Skripte und deine Umgebung herum auf, wahlweise vor Ort oder Live-Online.