Ein Shell-Skript ist eine Folge von Befehlen für die Kommandozeile, in einer Datei abgelegt und damit wiederholbar. Bash ist die Shell, für die solche Skripte meist geschrieben sind.
- Shell-Skript
Eine Datei mit Befehlen für die Kommandozeile, die nacheinander ausgeführt werden und damit einen Ablauf wiederholbar machen.
Beispiel: „Das Shell-Skript legt die Datenbank ab, packt die Dateien und schiebt beides auf den Sicherungsserver.“Bash ist die verbreitetste Shell auf Linux-Servern. Der Name steht für Bourne Again Shell, ein Wortspiel mit der älteren Bourne-Shell und dem englischen born again, also wiedergeboren.
Wofür sie gebraucht werden
Für alles, was auf einem Server wiederholt passiert: Sicherungen, Aufräumarbeiten, das Ausliefern einer neuen Fassung, das Verarbeiten von Dateien in großer Zahl. Was einmal als Folge von Befehlen funktioniert hat, gehört in eine Datei.
Der Gewinn liegt in der Wiederholbarkeit. Ein Ablauf, der im Kopf einer einzelnen Person steckt, ist kein Ablauf, sondern ein Risiko.
Die Fallstricke
Zwei sind berüchtigt. Leerzeichen in Dateinamen zerlegen einen unquotierten Wert in mehrere Argumente. Und ein Skript läuft nach einem Fehler einfach weiter, wenn man es nicht ausdrücklich abbricht.
Beides lässt sich in zwei Zeilen am Dateianfang entschärfen: Abbruch bei Fehlern und bei unbekannten Variablen. Wer das einmal gesetzt hat, verhindert die Klasse von Pannen, bei denen ein Skript im Fehlerfall das Falsche löscht.
#!/usr/bin/env bash
set -euo pipefail # abbrechen bei Fehler und leerer Variable
ZIEL="/var/backups/$(date +%F)"
mkdir -p "$ZIEL" # Anführungszeichen wegen Leerzeichen
for datei in uploads/*.jpg; do
cp "$datei" "$ZIEL/"
doneWann eine andere Sprache besser ist
Sobald gerechnet, geprüft oder mit Daten gearbeitet wird. Shell-Skripte sind stark im Verketten von Programmen und schwach in allem anderen. Ab etwa hundert Zeilen lohnt der Wechsel zu Python oder PHP.