Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Bash] Problème étrange concernant les fonctions

    15 septembre 2019 à 8:33:52

    Bonjour,

    Je corrige la copie d'un élève sur le dernier exercice du cours Linux et son code, bien qu'apparemment propre et bien déclaré, produit une erreur à l'exécution. Je n'arrive pas à saisir d'où vient le problème avec les fonctions, qui semblent pourtant bien écrites. Voici les erreurs :

    ./langstat.sh: 26: ./langstat.sh: function: not found
    ./langstat.sh: 35: ./langstat.sh: function: not found
    ./langstat.sh: 37: ./langstat.sh: [[: not found

    Voici le code en lui-même :

    #!/bin/sh
    ##############################################################################################################################
    # NOM SCRIPT    : langstat.sh
    # DESCRIPTION   : Ce script permet  d'afficher le nombre de mots utilisant chaque lettre de l'alphabet de A à Z
    #                 et de les classer  par le nombre d'occurences trouvées             
    # DATE creation : 19/09/2019 
    # AUTEUR        : (masqué)
    # ENTREE        : nécessite un fichier passer en parametre
    # SORTIE        : néant
    # PARAMETRE 1   : (obligatoire) fichier à extraire 
    # PARAMETRE 2   : (non obligatoire) permet de compter le nombre suvant la lettre sasie
    # exemple d'utilisation : 
    # ./langstat.sh dico.txt  
    #---> tri et renvoi le nombre de mots utilisant chaque lettre de l'alphabet de A à Z dans le fichier dico.txt
    # ./langstat.sh dico.txt A 
    # tri et renvoi le nombre de mots utilisant la lettre saisie dans le fichier dico.txt
    #############################################################################################################################
    ## passage en mode debug
    # set -x
    
    # --> penser a passer la commande chmod u+x langstat.sh avant de lancer ./langstat.sh
    
    # déclaration des fonctions
    
    #### verification que le fichier n'existe pas ###
    function verif_non_existence_fichier
    {
            if [ ! -f $1 ];then
                    echo "Le fichier $1 n'existe pas !"
                    exit
            fi
    }
    
    ### verification qu'ona saisie 1 lettre entre A et Z ###
    function verif_1seule_lettre_saisie
    {
    if [[ "$1" =~ ^[A-Z]{1}$  ]];then
                    ### "On a saisi une seule lettre entre A et Z !"
                                    echo >/dev/null
            else
                    echo "saisir une lettre entre  A et Z en majuscules!"
                    exit;
            fi
    }
    
    
    # déclaration des variables
    date_affichage=`date +%d%m%Y`
    # echo $date_affichage
    

    Merci d'avance, je sèche complètement...

    -
    Edité par NCZ 15 septembre 2019 à 10:51:18

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2019 à 8:44:20

      Bonjour,

      Le script est exécuté avec sh et non pas Bash comme en atteste le shebang: "#!/bin/sh".

      function et la structure [[ ]] ne sont pas définis en sh.

      Remplace le shebang ou exécute directement le script avec la commande bash.

      • Partager sur Facebook
      • Partager sur Twitter

      [Bash] Problème étrange concernant les fonctions

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown