Débogage des scripts shell: vérification de la syntaxe sans exécuter

Y a-t-il une option que je peux donner pour simplement vérifier la syntaxe dun script shell [bash] pour vérifier la syntaxe de mais pas réellement exécuter quoi que ce soit et ne causer aucun dommage potentiel?

Réponse

De bash(1) page de manuel:

-n Read commands but do not execute them. This may be used to check a shell script for syntax errors. This is ignored by interactive shells. 

Commentaires

  • Evidemment. Je ne sais pas pourquoi jétais si aveugle que je ne pouvais pas voir cela lorsque je parcourais les pages de manuel.

Réponse

Essayez http://www.shellcheck.net

$ shellcheck myscript.sh In myscript.sh line 590: for f in $*; do ^-- SC1009: The mentioned parser error was in this for loop. In myscript.sh line 617: if [ ! -e "$somefile".vcf ]; then ^-- SC1046: Couldn"t find "fi" for this "if". ^-- SC1073: Couldn"t parse this if expression. In myscript.sh line 1026: done ^-- SC1047: Expected "fi" matching previously mentioned "if". ^-- SC1072: Unexpected keyword/token. Fix any mentioned problems and try again. 

Eh bien, cela ne ma pas dit que le « si » manquait à la ligne 634 mais cétait assez utile.

Commentaires

  • Il ' est également intéressant de noter que vous pouvez le télécharger et lexécuter localement, il sexécute dans Haskell.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *