Logiciels en ligne de commande

shellcheck : Vérifier ses scripts shell

Table des matières

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.
Cette page a été vue 8479 fois