Forum général.cherche-logiciel compilateur shell

Posté par  .
Étiquettes : aucune
0
23
mai
2006
Bonjour,
je suis à la recherche un compilateur shell. Je sais, il y a shc, mais il ne correspond pas du tout à ce que je recherche. shc crypte, certes, mais ça ne m'intéresse pas.

Je veux un programme qui effectue des vérifications sur les scripts shell, comme tout autre compilateur "classique" (lexicale, syntaxique...). Je veux uniquement l'utiliser pour ça, et je n'utiliserai probablement pas les éventuels binaires qu'il me créera.

Quelqu'un sait si un tel programme existe ? Je suis désespéré, après des recherches infructueuses...

Merci.
  • # une option de ton shell ?

    Posté par  . Évalué à 1.

    avec perl il suffit de mettre
    #!/bin/perl -w
    au lieu de
    #!/bin/perl

    dans ton script.
    il me semble qu'en bash ou sh tu dois pouvoir faire pareil.

    bon ce n'est pas de la compilation mais de la verification dont tu as besoin...
    • [^] # Re: une option de ton shell ?

      Posté par  . Évalué à 2.

      pour ksh c'est l'option -n:

      -n Reads commands and checks them for syntax errors, but does not execute them.
      This flag is ignored for interactive shells.

      pour bash il y a de fortes chancesz que ce soit la même.
      • [^] # Re: une option de ton shell ?

        Posté par  . Évalué à 1.

        Merci pour ces réponses, effectivement, -n fonctionne. Cependant, si j'exécute mon script de manière classique, ça fait la même chose, au détail près que cela exécute réellement les commandes.
        En fait j'aurais aimé un truc qui aille un peu plus loin, qui vérifie par exemple qu'une variable soit bien initialisée avant d'être utilisée, des trucs comme ça.

        Cela dit, l'option -n sera sûrement une avancée pour moi, ça m'évitera pas mal de pertes de temps je pense, mais bon. J'aurais espéré un peu plus.
        • [^] # Re: une option de ton shell ?

          Posté par  . Évalué à 1.

          L'option -u permet aussi de vérifier si les variables sont bien créées avant d'être utilisées, c'est déjà pas mal. Avec -n et -u, ça permet déjà quelques vérifications :0)
          • [^] # Re: une option de ton shell ?

            Posté par  (site web personnel) . Évalué à 2.

            moi je joue un peu avec bash -vx monscript.sh pour le débogage aussi... ça exécute le script et ça affiche la manière dont bash interprète chaque ligne...
            • [^] # Re: une option de ton shell ?

              Posté par  . Évalué à 1.

              -vx est bien sympa aussi, effectivement.

              Sinon, le prob avec -u c'est que ça exécute le script, et ya pas moyen de le combiner avec -n.
              Je me suis donc fait un prog en python qui vérifie si les variables sont bien initialisées (affectées avec '=' ou lues avec un 'read') avant d'être utilisées.

              Ca marche plutôt très bien, mais par contre, c'est pas garanti que demain, je me trouve dans un cas que je n'ai pas prévu. Je m'explique : pour détecter l'initialisation d'une variable, je regardais tous les signes '=' précédés de quelque chose. Et ce quelque chose est donc une variable. Le problème est que je m'aperçois au fur et à mesure des cas imprévus : par exemple, ./script.sh --option=toto fait que --option est reconnu comme une variable. Alors je rajoute des tests au fur et à mesure, ce qui n'est pas terrible.

              Je voulais donc savoir s'il existe une expression régulière connue, toute faite, qui matche avec les affectations de variables, et une autre qui matche avec les utilisations (en lecture) de variables (commençant par '$').

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.