So debuggen Sie Linux-Bash-Skripte mit ShellCheck

Haben Sie Probleme mit einem Bash-Skript, das Sie für Ihren Linux-PC geschrieben haben? Anstatt unzählige Threads auf StackExchange nach Programmierhilfe zu durchsuchen, sollten Sie das ShellCheck-Tool verwenden, um Linux Bash-Skripte zu debuggen und automatisch Fehler in Ihrem Code zu finden.

Holen Sie sich ShellCheck

ShellCheck ist ein nützliches Tool, das jedoch nicht standardmäßig mit Ihrem Linux-Betriebssystem geliefert wird. Wenn Sie es verwenden möchten, müssen Sie es stattdessen zuerst installieren. In diesem Tutorial behandeln wir die Installation von ShellCheck aus verschiedenen offiziellen Softwarequellen. Außerdem zeigen wir Ihnen, wie Sie das Programm über die generische Linux-Binärdatei zum Laufen bringen.

Öffnen Sie ein Terminalfenster und aktualisieren Sie Ihre Pakete. Folgen Sie dann den Anweisungen, die Ihrem Linux-Betriebssystem entsprechen.

Ubuntu

ShellCheck befindet sich in den offiziellen Ubuntu-Softwarequellen, daher ist die Installation recht einfach. Verwenden Sie in einem Terminal den Apt-Paketmanager und bringen Sie die neueste Version von ShellCheck zum Laufen.

sudo apt install shellcheck

Debian

Debian Stable hat eine ältere Version von ShellCheck, die Benutzer installieren können. Denken Sie daran, dass diese Version aufgrund der Vorgehensweise von Debian zurückgehalten wird.

Hinweis: Möchten Sie eine neuere Version des ShellCheck-Programms? Folgen Sie unserem Leitfaden und erfahren Sie, wie Sie modernere Software auf Debian erhalten.

sudo apt-get install shellcheck

Arch-Linux

Um ShellCheck auf Arch Linux zu erhalten, müssen Sie zuerst das Software-Repository „Community“ aktivieren. Die Aktivierung von „Community“ erfordert die Bearbeitung der Pacman.conf-Datei. Um die Datei zu bearbeiten, öffnen Sie Pacman.conf in Nano.

sudo nano /etc/pacman.conf

Blättern Sie durch (mit den Pfeiltasten) und suchen Sie den Abschnitt „Community“ der Datei. Entfernen Sie alle Instanzen des #-Symbols (ungefähr drei Zeilen). Speichern Sie dann die Änderungen, indem Sie die Taste Strg + O drücken.

  So übertragen Sie eine Linux-Installation auf eine andere Festplatte

Wenn die neuen Änderungen an Pacman.conf erledigt sind, drücken Sie Strg + X, um Nano zu schließen. Synchronisieren Sie dann Pacman erneut, um den Zugriff auf das „Community“-Repository von Arch Linux einzurichten.

sudo pacman -Syyuu

Installieren Sie schließlich ShellCheck auf Arch Linux mit:

sudo pacman -S shellcheck

Fedora

Um das ShellCheck-Skriptanalysetool unter Fedora Linux zu erhalten, öffnen Sie ein Terminal und verwenden Sie das DNF-Paketverwaltungstool.

sudo dnf install ShellCheck

OpenSUSE

Die Installation von ShellCheck unter OpenSUSE erfordert keine besonderen Schritte, da es in den Hauptsoftwarequellen der Distribution enthalten ist. Geben Sie dazu den folgenden Zypper-Paketbefehl in ein Terminalfenster ein.

sudo zypper install ShellCheck

Generisches Linux

Benutzer weniger bekannter Linux-Distributionen, die Zugriff auf das Skriptanalysetool ShellCheck haben möchten, müssen die universelle Binärversion installieren. Glücklicherweise ist diese Binärversion einfach zu installieren und erfordert kein Herumbasteln am Quellcode. Führen Sie die folgenden Schritte aus, damit es funktioniert!

  So installieren und verwenden Sie KDE Apper unter Linux

Schritt 1: Exportieren Sie die Version von ShellCheck, die Sie herunterladen möchten, in Ihre Terminalumgebung.

export scversion="stable" # or "v0.4.7", or "latest"

Schritt 2: Holen Sie sich mit dem wget-Download-Tool die neueste ShellCheck-Binärversion.

wget "https://storage.googleapis.com/shellcheck/shellcheck-${scversion}.linux.x86_64.tar.xz"

Schritt 3: Extrahieren Sie das ShellCheck TarXZ-Archiv mit dem tar-Befehl.

tar --xz -xvf shellcheck-"${scversion}".linux.x86_64.tar.xz

Schritt 4: Installieren Sie ShellCheck mit dem cp-Befehl auf Ihrem Linux-PC.

cp shellcheck-"${scversion}"/shellcheck /usr/bin/

Debuggen Sie Skripte mit ShellCheck

Der Hauptzweck von ShellCheck besteht darin, ein Skript (normalerweise Bash) zu überprüfen, missbrauchte Befehle zu erkennen und Korrekturen anzubieten. Gehen Sie für die grundlegende Verwendung wie folgt vor.

Zuerst CD, wo sich das Skript, das Sie überprüfen möchten, auf Ihrem Linux-PC befindet. In diesem Tutorial befindet sich unser Skript in ~/shell-scripts. Ihre können abweichen.

cd ~/shell-scripts

Führen Sie den Befehl ls aus und zeigen Sie alle Dateien im aktuellen Verzeichnis an.

Hinweis: Wenn Sie beabsichtigen, ShellCheck in einem Verzeichnis mit mehreren Dateitypen zu verwenden, ist es eine gute Idee, grep und ls miteinander zu kombinieren. Wenn Sie diese beiden Befehle zusammen verwenden, können Sie alle Nicht-Skriptdateien herausfiltern.

ls

Oder kombinieren Sie es mit grep, um nur Skriptdateien anzuzeigen.

ls | grep ".sh"
ls | grep ".bash"

Suchen Sie den Namen einer Skriptdatei in der ls-Eingabeaufforderung und markieren Sie den Dateinamen mit der Maus. Wenn Sie fertig sind, führen Sie es durch ShellCheck und überprüfen Sie Ihren Code.

  Wie man Legion TD 2 unter Linux spielt

shellcheck name-of-file.sh

oder

shellcheck name-of-file.bash

Unmittelbar nachdem der Shellcheck-Befehl ausgeführt wurde, erkennt er Probleme mit Ihrem Code und fügt ihn in die Terminal-Eingabeaufforderung ein. Lesen Sie es durch und erfahren Sie, wie Sie Ihre Programmierung verbessern können, indem Sie den darin enthaltenen Vorschlägen folgen.

ShellCheck-Bericht in einer Datei speichern

Das Erhalten eines sofortigen Berichts im Terminal für Ihre Bash-Programmierung ist sehr nützlich, aber Sie können ihn verlieren, wenn Sie das Terminal schließen. Um den Verlust Ihres Shellcheck-Berichts zu umgehen, empfehlen wir, die Ausgabe in einer Textdatei zu speichern, indem Sie das Programm in Kombination mit der >>-Funktion im Terminal ausführen.

shellcheck name-of-file.sh >> ~/Documents/shellcheck-report-name-of-file.sh

oder

shellcheck name-of-file.bash >> ~/Documents/shellcheck-report-name-of-file.bash

Zeigen Sie Ihren gespeicherten Bericht im Terminal über den cat-Befehl an.

cat ~/Documents/shellcheck-report-name-of-file.sh | more

oder

cat ~/Documents/shellcheck-report-name-of-file.bash | more