Einführung in ShellCheck
- ShellCheck ist ein Tool, das Bugs in Shell-Skripten findet.
- Es kann lokal über
cabal, apt, dnf, pkg und brew installiert werden.
- Wenn man ein Skript einfügt, gibt ShellCheck die Analyseergebnisse aus.
Funktionen von ShellCheck
- ShellCheck kann unter der GPLv3-Lizenz frei verwendet werden.
- Es ist im ShellCheck-Wiki dokumentiert, und der Quellcode kann auf GitHub eingesehen werden.
- Es ist in den meisten Distributionen oder Paketmanagern bereits paketiert.
- Es wird in wichtigen Editoren als integrierter Linter unterstützt, und über CodeClimate, Codacy und CodeFactor kann der Code von GitHub-Repositories automatisch geprüft werden.
- Es wurde in Haskell geschrieben und eignet sich gut für Nutzer, die daran interessiert sind.
Danksagung
- Besonderer Dank gilt den GitHub Sponsors: Gitpod, Mercedes-Benz, BashSupport Pro, per1234, WhitewaterFoundry, cavcrosby, dcminter, photostructure, Cronitor, djdefi, steve-chavez und weiteren.
Meinung von GN⁺
- Das Wichtigste an diesem Artikel ist, dass ShellCheck ein nützliches Tool zum Finden von Bugs in Shell-Skripten ist.
- Dass ShellCheck kostenlos ist, auf verschiedenen Plattformen und in vielen Editoren unterstützt wird und einfach zu nutzen ist, dürfte für viele interessant sein.
- Besonders die Unterstützung durch die Open-Source-Community und die Tatsache, dass es in Haskell entwickelt wurde, könnten für Softwareentwickler attraktiv sein.
1 Kommentare
Hacker-News-Kommentare
Hinweise zum Schreiben von Skripten
-u(nounset) zu verwenden, damit bei der Verwendung nicht deklarierter Variablen ein Fehler ausgelöst wird. Eine Ausnahme ist, dass leere Arrays bei der Array-Erweiterung als unbound betrachtet werden können.-n(noexec) kann ein Dry-Run versucht werden, der die Ausführung von Befehlen verhindert.-e(errexit) ist ebenfalls nützlich, aber man sollte beachten, dass nur fehlgeschlagene "naked" Befehle zum Abbruch führen. Um das zu vermeiden, wird bevorzugt, Befehlen|| fail "..."hinzuzufügen.Auffinden von Schwachstellen in Shell-Skripten
$((1 + ENV_VAR))verwendet und$ENV_VARkontrollieren kann, lässt sich Code einschleusen.Shellcheck und strictbash
Erwähnungen von Shellcheck
Verwendung von Haskell und Turtle
Verwendung von Shellcheck und Lintern
.gitlab-ci.yml-Dateien und sind daher schwer zu prüfen. Es wurde ein Wrapper erstellt, um sie automatisch zu prüfen.Bash Language Server
Lerneffekt von Shellcheck
/bin/shgeprüft wurde, wurde trotz Erfahrung im Skriptschreiben seit den 80er-Jahren noch Neues gelernt.Empfehlung für Bach
Shellcheck und die Behandlung von source/import
shein Albtraum ist.