Bash-Grundlagen fuer Sysadmins
Wer regelmäßig auf Linux-Servern arbeitet kommt an Bash-Scripts nicht vorbei.
Hier die Grundlagen die man kennen muss um vernünftige Scripts zu schreiben.
Shebang und Exit-Codes
Jedes Script beginnt mit der Shebang-Zeile.
#!/bin/bash set -e
set -e bricht das Script ab sobald ein Befehl fehlschlägt. Ohne das läuft es einfach weiter, was zu schwer zu debuggenden Fehlern führt.
Exit-Codes: 0 bedeutet Erfolg, alles andere ist ein Fehler.
if ! command -v nginx &>/dev/null; then
echo "nginx ist nicht installiert"
exit 1
fi
Variablen
name="wert" echo "$name"
Immer in Anführungszeichen damit Leerzeichen keine Probleme machen.
Befehlsausgabe in Variable speichern.
datum=$(date +%Y-%m-%d) anzahl=$(ls /var/www | wc -l)
Bedingungen
if [ -f "/etc/nginx/nginx.conf" ]; then
echo "nginx.conf existiert"
fi
if [ "$1" = "" ]; then
echo "Kein Argument übergeben"
exit 1
fi
-f prüft ob eine Datei existiert, -d für Verzeichnisse, -z ob ein String leer ist.
Schleifen
Über Dateien iterieren.
for file in /var/log/*.log; do
echo "Verarbeite: $file"
done
While-Schleife.
while IFS= read -r line; do
echo "$line"
done < datei.txt
Funktionen
log() {
echo "[$(date +%H:%M:%S)] $1"
}
log "Script gestartet"
log "Fertig"
Argumente
$1, $2 usw. sind die übergebenen Argumente, $# die Anzahl, $@ alle zusammen.
if [ "$#" -lt 1 ]; then
echo "Verwendung: $0 <pfad>"
exit 1
fi
pfad="$1"