shellcheck : Vérifier ses scripts shell
Table des matières
shellcheck est un outil d'analyse qui va afficher des warnings et des suggestions concernant du code qui pourrait être amélioré dans vos scripts BASH.
L'outil shellcheck s'installe simplement depuis son gestionnaire de paquets :
Gentoo :
Fedora :
Ubuntu / Debian :
Télécharger le binaire directement sur Github : https://github.com/koalaman/shellcheck/releases
L'utilisation est simple comme bonjour :
Dans un script voici le bout de code que j'ai :
Voilà ce que me retourne shellcheck quand je lance :
On constate une recommandation à appliquer dans le cas où le cd est en échec.
On pourra adapter la sortie de shellcheck sous la forme d'un diff avec l'option -f :
Si notre script est parfait, rien n'est retourné par la commande.
Introduction
shellcheck est un outil d'analyse qui va afficher des warnings et des suggestions concernant du code qui pourrait être amélioré dans vos scripts BASH.
Installation
L'outil shellcheck s'installe simplement depuis son gestionnaire de paquets :
Gentoo :
Code BASH :
emerge -av dev-util/shellcheck-bin
Fedora :
Code BASH :
dnf install ShellCheck
Ubuntu / Debian :
Code BASH :
apt install shellcheck
Télécharger le binaire directement sur Github : https://github.com/koalaman/shellcheck/releases
Utilisation
L'utilisation est simple comme bonjour :
Code BASH :
shellcheck votrescript.sh
Dans un script voici le bout de code que j'ai :
Code BASH :
mkdir /root/notocleaned 2>/dev/null cd /usr/share/fonts/noto/ for font in $TODELETE do find . -iname "Noto$font*.ttf" -exec mv {} /root/notocleaned/{} \; done
Voilà ce que me retourne shellcheck quand je lance :
Code BASH :
shellcheck noto-cleaner.sh
Code TEXT :
In noto-cleaner.sh line 12: cd /usr/share/fonts/noto/ ^-----------------------^ SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails. Did you mean: cd /usr/share/fonts/noto/ || exit For more information: https://www.shellcheck.net/wiki/SC2164 -- Use 'cd ... || exit' or 'cd ... |...
On constate une recommandation à appliquer dans le cas où le cd est en échec.
On pourra adapter la sortie de shellcheck sous la forme d'un diff avec l'option -f :
Code BASH :
shellcheck noto-cleaner.sh -f diff
Code TEXT :
--- a/noto-cleaner.sh +++ b/noto-cleaner.sh @@ -9,7 +9,7 @@ case $1 in clean) mkdir /root/notocleaned 2>/dev/null - cd /usr/share/fonts/noto/ + cd /usr/share/fonts/noto/ || exit for font in $TODELETE do find . -iname "Noto$font*.ttf" -exec mv {} /root/notocleaned/{} \;
Si notre script est parfait, rien n'est retourné par la commande.