Recherche de site Web

Comment activer le mode de débogage de script Shell sous Linux


Un script est simplement une liste de commandes stockées dans un fichier. Au lieu d'exécuter une séquence de commandes en les tapant une par une à tout moment sur le terminal, un utilisateur du système peut toutes les stocker (commandes) dans un fichier et invoquer le fichier à plusieurs reprises pour réexécuter les commandes plusieurs fois.

Lors de l'apprentissage des scripts ou lors des premières étapes de l'écriture de scripts, nous commençons généralement par écrire des scripts petits ou courts avec quelques lignes de commandes. Et nous déboguons généralement ces scripts en ne faisant rien d’autre que d’examiner leur sortie et de nous assurer qu’ils fonctionnent comme prévu.

Cependant, à mesure que nous commençons à écrire des scripts très longs et avancés avec des milliers de lignes de commandes, par exemple des scripts qui modifient les paramètres du système, effectuent des sauvegardes critiques sur les réseaux et bien d'autres encore, nous réaliserons que se contenter de regarder le résultat d'un script n'est pas assez pour trouver des bugs dans un script.

Par conséquent, dans cette série de débogage de script shell dans Linux, nous expliquerons comment activer le débogage de script shell, passerons ensuite à l'explication des différents modes de débogage de script shell et comment les utiliser dans la série suivante.

Comment démarrer un script

Un script se distingue des autres fichiers par sa première ligne, qui contient un #! (She-bang – définit le type de fichier) et un nom de chemin (chemin vers l'interpréteur). qui informe le système que le fichier est un ensemble de commandes qui seront interprétées par le programme spécifié (interpréteur).

Vous trouverez ci-dessous des exemples de « premières lignes » dans différents types de scripts :

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

Remarque : La première ligne ou #! peut être omise si un script contient uniquement un ensemble de commandes système standard, sans aucune commande interne. directives du shell.

Comment exécuter un script Shell sous Linux

La syntaxe conventionnelle pour appeler un script shell est la suivante :

script_name  argument1 ... argumentN

Une autre forme possible consiste à spécifier clairement le shell qui exécutera le script comme ci-dessous :

shell script_name argument1 ... argumentN  

Par exemple:

/bin/bash script_name argument1 ... argumentN     [For bash scripting]
/bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
/bin/sh script_name argument1 ... argumentN       [For sh scripting]

Pour les scripts qui n'ont pas #! comme première ligne et qui contiennent uniquement des commandes système de base telles que celle ci-dessous :


#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

Rendez-le simplement exécutable et exécutez-le comme suit :


chmod +x  script_name
./script_name 

Méthodes d'activation du mode de débogage des scripts Shell

Vous trouverez ci-dessous les principales options de débogage du script shell :

  1. -n (abréviation de noexec ou no ecxecution) – demande au shell de lire toutes les commandes, mais ne les exécute pas. Cette option active le mode de vérification de la syntaxe.
  2. -x (abréviation de xtrace ou trace d'exécution) – indique au shell d'afficher toutes les commandes et leurs arguments sur le terminal pendant leur exécution. Cette option active le mode de traçage du shell.

1. Modification de la première ligne d'un script Shell

Le premier mécanisme consiste à modifier la première ligne d'un script shell comme ci-dessous, cela permettra le débogage de l'ensemble du script.

#!/bin/sh option(s)

Dans le formulaire ci-dessus, l'option peut être une ou une combinaison des options de débogage ci-dessus.

2. Appel de Shell avec les options de débogage

La seconde consiste à invoquer le shell avec les options de débogage comme suit, cette méthode activera également le débogage de l'intégralité du script.

shell option(s) script_name argument1 ... argumentN

Par exemple:

/bin/bash option(s) script_name argument1 ... argumentN   

3. Utilisation de la commande intégrée set Shell

La troisième méthode consiste à utiliser la commande intégrée set pour déboguer une section donnée d'un script shell tel qu'une fonction. Ce mécanisme est important, car il nous permet d'activer le débogage sur n'importe quel segment d'un script shell.

Nous pouvons activer le mode débogage à l'aide de la commande set dans le formulaire ci-dessous, où option est l'une des options de débogage.

set option 

Pour activer le mode débogage, utilisez :

set -option

Pour désactiver le mode débogage, utilisez :

set +option

De plus, si nous avons activé plusieurs modes de débogage dans différents segments d'un script shell, nous pouvons tous les désactiver d'un coup comme ceci :

set -

C'est tout pour l'instant avec l'activation du mode de débogage des scripts shell. Comme nous l'avons vu, nous pouvons déboguer un script shell entier ou une section particulière d'un script.

Dans les deux prochains épisodes de cette série, nous expliquerons comment utiliser les options de débogage du script shell pour expliquer le verbeux, la vérification de la syntaxe et le débogage du suivi du shell modes avec exemples.

Surtout, n'oubliez pas de poser des questions sur ce guide ou peut-être de nous faire part de vos commentaires via la section commentaires ci-dessous. D’ici là, restez connecté à Tecmint.