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


9

Y a-t-il une option que je peux donner pour vérifier simplement la syntaxe d'un script shell [bash] pour vérifier la syntaxe de celui-ci, mais ne pas réellement exécuter quoi que ce soit ni causer de dommages potentiels?

Réponses:


7

Depuis la 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.

Évidemment. Je ne sais pas pourquoi j'étais si aveugle que je ne pouvais pas voir cela quand je parcourais les pages de manuel.
Aeyoun

1

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, il ne m'a pas dit que le «si» manquait à la ligne 634, mais c'était assez utile.


Il convient également de noter que vous pouvez le télécharger et l'exécuter localement, il s'exécute dans Haskell.
phk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.