Comment effectuer le mode de débogage de vérification de la syntaxe dans les scripts shell

Comment effectuer le mode de débogage de vérification de la syntaxe dans les scripts shell

Nous avons commencé la série de débogage du script Shell en expliquant les différentes options de débogage et comment activer les modes de débogage du script shell.

Après avoir écrit vos scripts Shell, il est recommandé de vérifier pratiquement la syntaxe dans les scripts avant de les exécuter, au lieu de regarder leur sortie pour confirmer qu'ils fonctionnent correctement.

Dans cette partie de la série, nous allons passer par la façon d'utiliser le mode de débogage de vérification de la syntaxe. N'oubliez pas que nous avons expliqué les différentes options de débogage dans la première partie de cette série et ici, nous les utiliserons pour effectuer un débogage de script.

Activer le mode de débogage verbeux

Avant de passer à l'objectif principal de ce guide, explorons brièvement le mode verbeux. Il est activé par le -V Option de débogage, qui indique au shell d'afficher toutes les lignes d'un script pendant leur lecture.

Pour démontrer comment cela fonctionne, ci-dessous est un exemple de script de shell pour convertir des images PNG au format JPG.

Tapez (ou copiez et collez-le dans un fichier.

#!/ bin / bash #convert pour l'image dans *.png; convertir "$ image" "$ image%.png.jpg "echo" image $ image convertie en $ image%.png.jpg " 

Ensuite, enregistrez le fichier et créez l'exécutable de script à l'aide de la commande ci-dessous:

$ chmod + x script.shot 

Nous pouvons invoquer le script et afficher toutes les lignes car elles sont lues par le shell comme:

$ bash -v script.shot 
Afficher toutes les lignes dans le script shell

Activation du mode de débogage de vérification de la syntaxe dans les scripts shell

Revenant à notre sujet de mise en avant, le -n active le mode de vérification de la syntaxe. Il demande au shell de lire essentiellement toutes les commandes, mais ne les exécute pas, il (shell) examine uniquement la syntaxe utilisée.

Dans le cas où il y a des erreurs dans votre script de shell, le shell sortira les erreurs sur le terminal, sinon il n'affiche rien.

La syntaxe pour activer la vérification de la syntaxe est la suivante:

$ BASH -N Script.shot 

Parce que la syntaxe dans le script est correcte, la commande ci-dessus n'affiche aucune sortie. Par conséquent, essayons de supprimer le fait mot qui ferme la boucle pour et voir si elle montre une erreur:

Vous trouverez ci-dessous le script de shell modifié pour convertir les images PNG au format JPG qui contient un bug.

#!/ bin / bash #script avec un bug #convert pour l'image dans *.png; convertir "$ image" "$ image%.png.jpg "echo" image $ image convertie en $ image%.png.JPG "Exit 0 

Enregistrez le fichier, puis exécutez-le tout en effectuant la vérification de la syntaxe:

$ BASH -N Script.shot 
Vérifier la syntaxe dans le script shell

D'après la sortie ci-dessus, nous pouvons voir qu'il y a un problème de syntaxe avec notre script, la boucle For manque une fermeture fait mot-clé. Et la coquille l'a cherché jusqu'à la fin du fichier et une fois qu'il ne l'a pas trouvé (fait), le shell a imprimé une erreur de syntaxe:

scénario.SH: Ligne 11: Erreur de syntaxe: fin inattendue du fichier 

Nous pouvons également combiner le mode Verbose et le mode de vérification de la syntaxe:

$ BASH -VN Script.shot 
Activer le script verbeux et syntaxe

Alternativement, nous pouvons permettre la vérification de la syntaxe en modifiant la première ligne du script ci-dessus comme dans l'exemple suivant.

#!/ bin / bash -n #alter la première ligne d'un script pour activer la syntaxe vérifiant #convert pour l'image dans *.png; convertir "$ image" "$ image%.png.jpg "echo" image $ image convertie en $ image%.png.JPG "Exit 0 

Comme précédemment, enregistrez le fichier et exécutez-le lors de la vérification de la syntaxe:

$ ./scénario.shot scénario.SH: Ligne 12: Erreur de syntaxe: fin inattendue du fichier 

De plus, nous pouvons utiliser la commande intégrée Shell Shell pour activer le mode de débogage dans le script ci-dessus.

Dans l'exemple ci-dessous, nous vérifions uniquement la syntaxe de la boucle pour notre script.

#!/ bin / bash #Using Set Shell Stand In Stand In pour activer le débogage #convert #Enable Debugging set -n for Image in *.png; convertir "$ image" "$ image%.png.jpg "echo" image $ image convertie en $ image%.png.JPG "#Disable Debugging Set + n Exit 0 

Encore une fois, enregistrez le fichier et appelez le script:

$ ./scénario.shot 

En résumé, nous devons toujours nous assurer que nous vérifions syntaxiquement nos scripts de shell pour capturer une erreur avant de les exécuter.

Pour nous envoyer des questions ou des commentaires concernant ce guide, utilisez le formulaire de réponse ci-dessous. Dans la troisième partie de cette série, nous passerons à l'explication et à l'utilisation du mode de débogage du traçage des coquilles.