GNU/Linux >> Tutoriels Linux >  >> Linux

ShellCheck - Un utilitaire gratuit pour trouver des bogues dans vos scripts Shell

Vous êtes un programmeur en herbe et vous venez d'écrire un simple script shell. Vous vouliez vérifier s'il y avait des bugs dedans, mais vous ne savez pas comment ? Pas de soucis! Désormais, vous pouvez facilement trouver des bogues dans vos scripts shell à l'aide de ShellCheck .

ShellCheck est un outil d'analyse statique pour les scripts shell. ShellCheck analysera le script shell et affichera instantanément s'il y a des erreurs dans vos scripts shell. Il est écrit en langage Haskell et distribué librement sous GPLv3.

ShellCheck analysera le script et procédera comme suit :

  • Vérifiez les citations incorrectes
  • Vérifiez les déclarations de test incorrectes,
  • Reconnaître les commandes incorrectes,
  • Reconnaître les erreurs de syntaxe,
  • Vous suggérer d'améliorer le style du script,
  • Reconnaître les fautes de frappe,
  • Améliorez la robustesse de votre script,
  • Et vérifiez quelques autres problèmes.

Vous n'avez pas besoin de l'aide d'un expert pour corriger les bogues dans vos scripts. Ouvrez simplement ShellCheck, collez votre script et boum ! Vous pouvez utiliser ShellCheck en ligne ou hors ligne. Dans ce bref tutoriel, je vais vous montrer les deux !

ShellCheck sur le Web

Vous pouvez vérifier les scripts en ligne à tout moment en visitant le site Web ShellCheck.

Ouvrez votre navigateur Web et accédez au lien suivant.

Collez-y votre script shell pour un retour instantané.

Exemple de résultat :

Remarque : Je n'ai pas écrit le script utilisé dans cet exemple. Je viens de le trouver en ligne pour tester ShellCheck.

Alternativement, vous pouvez l'installer sur votre machine Linux et tester votre script à tout moment hors ligne.

Installer ShellCheck sur Linux

ShellCheck est fourni pour la plupart des systèmes d'exploitation Linux. Vous pouvez facilement l'installer à l'aide du gestionnaire de packages de votre distribution, comme indiqué ci-dessous.

Sur Arch Linux et ses dérivés :

$ sudo pacman -S shellcheck

Sur Debian, Ubuntu, Linux Mint, exécutez la commande suivante pour l'installer :

$ sudo apt-get install shellcheck

Sur RHEL, CentOS active le référentiel EPEL :

$ sudo yum -y install epel-release

Et installez shellcheck :

$ sudo yum install ShellCheck

Sur les systèmes Fedora :

$ sudo dnf install ShellCheck

Sur openSUSE (édition Tumbleweed), exécutez la commande suivante :

$ sudo zypper in ShellCheck

Pour les autres distributions, consultez la page d'installation officielle .

Trouvez des bogues dans vos scripts Shell à l'aide de ShellCheck sous Linux

Une fois installé, ouvrez Terminal et exécutez la commande suivante pour tester vos scripts.

shellcheck <path_of_your_script>

Exemple : 

$ shellcheck myscript.sh

Exemple de résultat :

In myscript.sh line 1:
# This script displays the date, time, username and
^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.


In myscript.sh line 6:
 echo "Your username is: `whoami` \\n"
 ^-- SC2006: Use $(..) instead of legacy `..`.
 ^-- SC2028: echo won't expand escape sequences. Consider printf.

Comme vous le voyez dans la sortie ci-dessus, ShellCheck indique les suggestions aux lignes 1 et 6.

Veuillez noter que ShellCheck ne corrigera pas automatiquement les erreurs dans les scripts. Au lieu de cela, il donnera des avertissements et des suggestions pour vos scripts shell.

L'utilitaire ShellCheck pourrait être utile à quiconque souhaite apprendre les scripts Shell. Écrivez simplement un script, copiez/collez le code dans ShellCheck et trouvez les erreurs. C'est aussi simple que ça !


Linux
  1. Comment utiliser les entrées dans vos scripts shell

  2. Autoriser Setuid sur les scripts Shell ?

  3. Exécuter des scripts Shell via un site Web ?

  4. Masquer le mot de passe dans les scripts shell ?

  5. Fractionnement des commandes longues dans les scripts Shell ?

Choc d'obus ? Non, ShellCheck ! Trouvez des bogues dans vos scripts.

Tableaux dans les scripts shell

Comment utiliser if-else dans les scripts shell ?

Comprendre la boucle for dans les scripts shell

La boucle while dans les scripts shell

Trouver la taille de la RAM sous Linux