Shellcheck - Bash-Scripts statisch analysieren
Shellcheck findet Fehler in Bash-Scripts die man selbst leicht übersieht.
Falsch gesetzte Anführungszeichen, unportable Syntax, häufige Fallstricke — alles wird markiert.
Installation
sudo apt-get install shellcheck
Verwendung
shellcheck mein-script.sh
Beispiel-Ausgabe
In mein-script.sh line 5:
for file in $(ls /var/log/*.log); do
^-- SC2045: Iterating over ls output is fragile.
Use globs.
In mein-script.sh line 8:
if [ $name = "test" ]; then
^-- SC2086: Double quote to prevent globbing and word splitting.
Jeder Hinweis hat eine SC-Nummer die man auf shellcheck.net nachschlagen kann um die Erklärung zu lesen.
Online ohne Installation
https://www.shellcheck.net
Script einfügen und direkt analysieren.
In Editor integrieren
Für VS Code gibt es eine Shellcheck-Extension die beim Schreiben sofort Hinweise zeigt.
Für Vim/Neovim über ALE oder ähnliche Linting-Plugins.
Als Git Hook
#!/bin/bash
# .git/hooks/pre-commit
for file in $(git diff --cached --name-only | grep '\.sh$'); do
shellcheck "$file"
if [ $? -ne 0 ]; then
echo "Shellcheck-Fehler in $file"
exit 1
fi
done
Hinweise deaktivieren
Wenn man bewusst von einer Empfehlung abweicht.
# shellcheck disable=SC2086 echo $variable_ohne_quotes
Shellcheck ist eines der wenigen Tools die ich auf jedem System installiere wo ich Scripts schreibe.