ShellCheck - E Tool dat Warnungen a Virschléi fir Shell Scripten weist


ShellCheck ass e statesche Analyseinstrument dat Warnungen a Virschléi betreffend schlechte Code an Bash/sh Shell Scripten weist. Et kann op verschidde Manéiere benotzt ginn: vum Internet andeems Dir Äert Shell-Skript an en Online Editor (Ace - e Standalone Code Editor geschriwwen a JavaScript) an https://www.shellcheck.net (et ass ëmmer mat der leschter Git synchroniséiert) engagéieren, an ass den einfachste Wee fir ShellCheck ze ginn) fir direkt Feedback.

Alternativ kënnt Dir et op Ärer Maschinn installéieren an se vum Terminal ausféieren, et mat Ärem Texteditor integréieren wéi och an Ärem Bau- oder Testsuiten.

Et ginn dräi Saachen ShellCheck mécht haaptsächlech:

  • Et weist an erkläert typesch Ufänger Syntaxprobleemer déi eng Shell verursaache fir kryptesch Fehlermeldungen ze ginn.
  • Et weist an erkläert typesch semantesch Zwëschenniveausproblemer, déi eng Schuel komesch a kontraintuitiv behuelen.
  • Et weist och subtile Virwarnungen, Eckfäll a Fallfäegkeeten aus, déi dem fortgeschrattene Benotzer säi soss funktionnéierende Skript ënner zukünfteg Ëmstänn versoen kënnen.

An dësem Artikel wäerte mir weisen wéi Dir ShellCheck op verschidde Weeër installéiere a benotzt fir Bugs oder schlechte Code an Äre Shell-Skripte an Linux ze fannen.

Wéi installéiert a benotzt ShellCheck op Linux

ShellCheck kann einfach lokal installéiert ginn duerch Äre Package Manager wéi gewisen.

# apt-get install shellcheck
# yum -y install epel-release
# yum install ShellCheck
# dnf install ShellCheck

Wann ShellCheck installéiert ass, kucke mer wéi Dir ShellCheck an de verschiddene Methoden benotzt, déi mir virdru genannt hunn.

Gitt op https://www.shellcheck.net a paste Äert Skript am Ace Editor geliwwert, Dir gesitt d'Output um Enn vum Editor wéi am Bildschierm hei ënnen gewisen.

Am folgende Beispill besteet den Test Shell Skript aus de folgende Linnen:

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

Vum Screenshot hei uewen sinn déi éischt zwou Variablen E_NOTROOT an E_MINARGS deklaréiert ginn awer sinn net benotzt, ShellCheck bericht dës als suggestive Feeler:

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

Dann zweetens, de falschen Numm (an der Ausso Echo $E_NONROOT) gouf benotzt fir Variabel E_NOTROOT ze echoen, dofir weist ShellCheck de Feeler:

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

Nach eng Kéier wann Dir d'Echo Kommandoen kuckt, sinn d'Variabelen net duebel zitéiert ginn (hëlleft fir Globbing a Wuertspaltung ze vermeiden), dofir weist Shell Check d'Warnung:

SC2086: Double quote to prevent globbing and word splitting.

Dir kënnt och ShellCheck vun der Kommandozeil ausféieren, mir benotze datselwecht Shell-Skript hei uewen wéi follegt:

$ shellcheck test.sh

Dir kënnt och ShellCheck Suggestiounen a Warnungen direkt a verschiddene Redaktoren kucken, dëst ass wahrscheinlech e méi effiziente Wee fir ShellCheck ze benotzen, wann Dir eng Datei späichert, weist et Iech all Feeler am Code.

Am Vim, benotzt ALE oder Syntastic (mir benotze dëst):

Fänkt un mam Pathogen z'installéieren sou datt et einfach ass syntastesch z'installéieren. Fëllt d'Befehle hei ënnen fir d'pathogen.vim Datei an d'Verzeichnisser ze kréien déi se brauch:

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

Da füügt dëst op Är ~/.vimrc Datei:

execute pathogen#infect()

Wann Dir Pathogen installéiert hutt, an Dir kënnt elo syntastesch an ~/.vim/bundle setzen wéi follegt:

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

Als nächst, schléisst vim a start et zréck fir se nei ze lueden, gitt dann de Kommando hei ënnen:

:Helptags

Wann alles gutt geet, sollt Dir ShellCheck mat Vim integréiert hunn, déi folgend Screenshots weisen wéi et funktionnéiert mam selwechte Skript hei uewen.

Am Fall wou Dir e Feeler kritt nodeems Dir d'Schrëtt hei uewen gefollegt hutt, hutt Dir méiglecherweis Pathogen net korrekt installéiert. Maacht d'Schrëtt nei, awer dëst garantéiert datt Dir déi folgend gemaach hutt:

  • Erstellt souwuel de ~/.vim/autoload wéi och den ~/.vim/bundle Verzeichnis.
  • D'Exekutiv Pathogen#infect() Linn op Är ~/.vimrc Datei bäigefüügt.
  • Huet de Git Klon vu syntastesche bannent ~/.vim/bundle.
  • Benotzt entspriechend Permissiounen fir Zougang zu all uewe genannte Verzeichnisser.

Dir kënnt och aner Redaktoren benotzen fir schlecht Code a Shell-Skripte wéi:

  • An Emacs benotzt Flycheck.
  • Am Sublime benotzt SublimeLinter.
  • Am Atom, benotzt Linter.
  • An de meeschten aneren Editeuren benotzt GCC Fehlerkompatibilitéit.

Notiz: Benotzt d'Galerie vum schlechte Code fir méi ShellChecking auszeféieren.

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

Dat ass et! An dësem Artikel hu mir gewisen wéi Dir ShellCheck installéiert a benotzt fir Bugs oder schlechte Code an Äre Shell-Skripte an Linux ze fannen. Deelt Är Gedanken mat eis iwwer de Kommentarsektioun hei drënner.

Wësst Dir iwwer aner ähnlech Tools dobaussen? Wann jo, deelt d'Informatioun iwwer si och an de Kommentaren.