ShellCheck - Et verktøy som viser advarsler og forslag for Shell-skript
ShellCheck er et statisk analyseverktøy som viser advarsler og forslag angående dårlig kode i bash/sh shell-skript. Det kan brukes på flere måter: fra nettet ved å lime inn shell-scriptet ditt i en online editor (Ace – en frittstående koderedigerer skrevet i JavaScript) i https://www.shellcheck.net (det er alltid synkronisert til siste git forplikte seg, og er den enkleste måten å prøve ShellCheck på) for umiddelbar tilbakemelding.
Alternativt kan du installere den på maskinen din og kjøre den fra terminalen, integrere den med tekstredigereren din så vel som i bygge- eller testsuitene dine.
Det er tre ting ShellCheck primært gjør:
- Den påpeker og forklarer typiske nybegynnersyntaksproblemer som får et skall til å gi kryptiske feilmeldinger.
- Den påpeker og forklarer typiske semantiske problemer på middels nivå som får et skall til å oppføre seg merkelig og kontraintuitivt.
- Den påpeker også subtile forbehold, hjørnesaker og fallgruver som kan føre til at en avansert brukers ellers fungerende skript mislykkes under fremtidige omstendigheter.
I denne artikkelen vil vi vise hvordan du installerer og bruker ShellCheck på forskjellige måter for å finne feil eller dårlig kode i skallskriptene dine i Linux.
Hvordan installere og bruke ShellCheck i Linux
ShellCheck kan enkelt installeres lokalt gjennom pakkebehandlingen som vist.
På Debian/Ubuntu
apt-get install shellcheck
På RHEL/CentOS
yum -y install epel-release
yum install ShellCheck
På Fedora
dnf install ShellCheck
Når ShellCheck er installert, la oss ta en titt på hvordan du bruker ShellCheck i de forskjellige metodene vi nevnte før.
Bruke ShellCheck fra nettet
Gå til https://www.shellcheck.net og lim inn skriptet i Ace-editoren som følger med, du vil se utdataene nederst i editoren som vist i skjermbildet nedenfor.
I det følgende eksempelet består testskallskriptet av følgende linjer:
#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
#echo values of variables
echo $MINARGS
echo $E_NONROOT
exit 0;
Fra skjermbildet ovenfor er de to første variablene E_NOTROOT og E_MINARGS erklært, men er ubrukte, ShellCheck rapporterer disse som "suggestive feil":
SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it.
For det andre ble feil navn (i setningen echo $E_NONROOT) brukt til å echo variabel E_NOTROOT, det er derfor ShellCheck viser feilen:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
Igjen når du ser på ekko-kommandoene, har variablene ikke blitt anført i doble anførselstegn (hjelper med å forhindre globbing og orddeling), derfor viser Shell Check advarselen:
SC2086: Double quote to prevent globbing and word splitting.
Bruke ShellCheck fra terminalen
Du kan også kjøre ShellCheck fra kommandolinjen, vi bruker det samme shell-skriptet ovenfor som følger:
shellcheck test.sh
Bruke ShellCheck fra tekstredigereren
Du kan også se ShellCheck-forslag og advarsler direkte i en rekke redaktører, dette er sannsynligvis en mer effektiv måte å bruke ShellCheck på. Når du har lagret en fil, viser den deg eventuelle feil i koden.
I Vim bruker du ALE eller Syntastic (vi bruker dette):
Start med å installere Pathogen slik at det er enkelt å installere syntetisk. Kjør kommandoene nedenfor for å få pathogen.vim-filen og katalogene den trenger:
mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
Deretter legger du dette til ~/.vimrc-filen din:
execute pathogen#infect()
Når du har installert patogen, og du nå kan sette syntastic inn i ~/.vim/bundle som følger:
cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
Deretter lukker du vim og start den opp igjen for å laste den på nytt, og skriv deretter kommandoen nedenfor:
:Helptags
Hvis alt går bra, bør du ha ShellCheck integrert med Vim, følgende skjermbilder viser hvordan det fungerer ved å bruke det samme skriptet ovenfor.
I tilfelle du får en feilmelding etter å ha fulgt trinnene ovenfor, har du muligens ikke installert Pathogen riktig. Gjenta trinnene, men sørg for at du gjorde følgende:
- Opprettet både ~/.vim/autoload- og ~/.vim/bundle-katalogene.
- La til execute pathogen#infect()-linjen i ~/.vimrc-filen.
- Gjorde git-klonen av syntastisk inne i ~/.vim/bundle.
- Bruk passende tillatelser for å få tilgang til alle katalogene ovenfor.
Du kan også bruke andre redaktører for å sjekke dårlig kode i shell-skript som:
- I Emacs bruker du Flycheck.
- I Sublime bruker du SublimeLinter.
- I Atom, bruk Linter.
- I de fleste andre redaktører, bruk GCC-feilkompatibilitet.
Merk: Bruk galleriet med dårlig kode for å utføre mer ShellChecking.
ShellCheck Github Repository: https://github.com/koalaman/shellcheck
Det er det! I denne artikkelen viste vi hvordan du installerer og bruker ShellCheck for å finne feil eller dårlig kode i shell-skriptene dine i Linux. Del dine tanker med oss via kommentarfeltet nedenfor.
Vet du om andre lignende verktøy der ute? Hvis ja, del informasjon om dem i kommentarfeltet også.