Website-Suche

ShellCheck – ein Tool, das Warnungen und Vorschläge für Shell-Skripte anzeigt


ShellCheck ist ein statisches Analysetool, das Warnungen und Vorschläge zu fehlerhaftem Code in Bash/Sh-Shell-Skripten anzeigt. Es kann auf verschiedene Arten verwendet werden: aus dem Web, indem Sie Ihr Shell-Skript in einen Online-Editor (Ace – ein in JavaScript geschriebener eigenständiger Code-Editor) in https://www.shellcheck.net einfügen (es wird immer mit dem neuesten Git synchronisiert). Commit und ist die einfachste Möglichkeit, ShellCheck auszuprobieren, um sofortiges Feedback zu erhalten.

Alternativ können Sie es auf Ihrem Computer installieren und vom Terminal aus ausführen, es in Ihren Texteditor sowie in Ihre Build- oder Testsuiten integrieren.

Es gibt hauptsächlich drei Dinge, die ShellCheck tut:

  • Es weist auf typische Syntaxprobleme für Anfänger hin und erklärt diese, die dazu führen, dass eine Shell kryptische Fehlermeldungen ausgibt.
  • Es weist auf typische semantische Probleme mittlerer Ebene hin und erklärt sie, die dazu führen, dass sich eine Shell seltsam und kontraintuitiv verhält.
  • Es weist auch auf subtile Vorbehalte, Eckfälle und Fallstricke hin, die dazu führen können, dass das ansonsten funktionierende Skript eines fortgeschrittenen Benutzers unter zukünftigen Umständen fehlschlägt.

In diesem Artikel zeigen wir, wie Sie ShellCheck auf verschiedene Arten installieren und verwenden, um Fehler oder fehlerhaften Code in Ihren Shell-Skripten unter Linux zu finden.

So installieren und verwenden Sie ShellCheck unter Linux

ShellCheck kann wie gezeigt einfach lokal über Ihren Paketmanager installiert werden.

Auf Debian/Ubuntu

apt-get install shellcheck

Auf RHEL/CentOS

yum -y install epel-release
yum install ShellCheck

Auf Fedora

dnf install ShellCheck

Sobald ShellCheck installiert ist, werfen wir einen Blick darauf, wie ShellCheck in den verschiedenen zuvor erwähnten Methoden verwendet wird.

Verwenden von ShellCheck aus dem Web

Gehen Sie zu https://www.shellcheck.net und fügen Sie Ihr Skript in den bereitgestellten Ace-Editor ein. Die Ausgabe wird unten im Editor angezeigt, wie im Screenshot unten dargestellt.

Im folgenden Beispiel besteht das Test-Shell-Skript aus den folgenden Zeilen:

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;

Aus dem Screenshot oben geht hervor, dass die ersten beiden Variablen E_NOTROOT und E_MINARGS deklariert wurden, aber nicht verwendet werden. ShellCheck meldet diese als „deutliche Fehler“:

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

Zweitens wurde der falsche Name (in der Anweisung echo $E_NONROOT) für die echo Variable E_NOTROOT verwendet, weshalb ShellCheck den Fehler anzeigt:

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

Wenn Sie sich erneut die Echo-Befehle ansehen, wurden die Variablen nicht in doppelte Anführungszeichen gesetzt (hilft, Globbing und Wortaufteilung zu verhindern), daher zeigt Shell Check die Warnung an:

SC2086: Double quote to prevent globbing and word splitting.

Verwenden von ShellCheck vom Terminal aus

Sie können ShellCheck auch über die Befehlszeile ausführen. Wir verwenden das gleiche Shell-Skript wie oben:

shellcheck test.sh

Verwenden von ShellCheck aus dem Texteditor

Sie können ShellCheck-Vorschläge und -Warnungen auch direkt in verschiedenen Editoren anzeigen. Dies ist wahrscheinlich eine effizientere Art der Verwendung von ShellCheck. Sobald Sie Dateien speichern, werden Ihnen alle Fehler im Code angezeigt.

Verwenden Sie in Vim ALE oder Syntastic (wir werden dies verwenden):

Beginnen Sie mit der Installation von Pathogen, damit die syntastische Installation einfach ist. Führen Sie die folgenden Befehle aus, um die Datei pathogen.vim und die benötigten Verzeichnisse abzurufen:

mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Fügen Sie dann Folgendes zu Ihrer ~/.vimrc-Datei hinzu:

execute pathogen#infect()

Sobald Sie Pathogen installiert haben, können Sie Syntastic wie folgt in ~/.vim/bundle einfügen:

cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

Als nächstes schließen Sie vim und starten es erneut, um es neu zu laden. Geben Sie dann den folgenden Befehl ein:

:Helptags

Wenn alles gut geht, sollten Sie ShellCheck in Vim integriert haben. Die folgenden Screenshots zeigen, wie es mit demselben Skript oben funktioniert.

Falls Sie eine Fehlermeldung erhalten, nachdem Sie die oben genannten Schritte ausgeführt haben, haben Sie Pathogen möglicherweise nicht richtig installiert. Wiederholen Sie die Schritte, stellen Sie jedoch sicher, dass Sie Folgendes getan haben:

  • Die Verzeichnisse ~/.vim/autoload und ~/.vim/bundle wurden erstellt.
  • Die Zeile „execute pathogen#infect()“ wurde zu Ihrer Datei ~/.vimrc hinzugefügt.
  • Habe den Git-Klon von Syntastic in ~/.vim/bundle erstellt.
  • Verwenden Sie die entsprechenden Berechtigungen, um auf alle oben genannten Verzeichnisse zuzugreifen.

Sie können auch andere Editoren verwenden, um fehlerhaften Code in Shell-Skripten zu überprüfen, wie zum Beispiel:

  • Verwenden Sie in Emacs Flycheck.
  • Verwenden Sie in Sublime SublimeLinter.
  • Nutzen Sie in Atom Linter.
  • In den meisten anderen Editoren verwenden Sie die GCC-Fehlerkompatibilität.

Hinweis: Verwenden Sie die Galerie mit fehlerhaftem Code, um weitere ShellChecks durchzuführen.

ShellCheck Github-Repository: https://github.com/koalaman/shellcheck

Das ist es! In diesem Artikel haben wir gezeigt, wie Sie ShellCheck installieren und verwenden, um Fehler oder fehlerhaften Code in Ihren Shell-Skripten unter Linux zu finden. Teilen Sie uns Ihre Gedanken über den Kommentarbereich unten mit.

Kennen Sie andere ähnliche Tools? Wenn ja, dann teilen Sie auch Informationen darüber in den Kommentaren mit.