IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Fonction ajout de module


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    Par défaut Fonction ajout de module
    Bonjour,

    j'ai fais ce petit bout de code mais cela ne fonctionne pas comme je le voudrais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    RemplirTableau()
    {
    listemodules=( "$1" "${listemodules[@]}" )
    }
     
    FonctionModule()
    {
    IFS=$'\t\n'                                          # modification du séparateur
    declare -a listemodules                              # déclaration du tableau
    echo -e "\nMerci de lister les modules à ajouter en validant par la touche entrée à chaque ligne.\nPour terminer la liste mettre le mot Fin sur la derniere ligne"                                        # demande le nom du module
    read module                                          # mets le module dans la variable module
    while [ $module != "Fin" ]; do                       # tant que la variable ne vaut pas Fin
      recherchemod=$(grep $module ModOM);                # on recherche le nom du module dans le fichier ModOM
      if [ -z $recherchemod ]; then                      # if la recherche ne renvoi pas de résultat 
        echo -e "Ce module n'existe pas."                # info utilisateur
        exec $1                                        # retour à la ligne 96
      else
        RemplirTableau "$module"                         # sinon on ajoute le module dans la tableau
        exec $1                                        # on renvoi à la saisi de la liste 
      fi
    done
    }
     
    if [ $modules == "o" ]; then                           # si il y a des modules
      FonctionModule
    fi
     
    # traiter les modules
    if [ $modules == "o" ]; then
      echo "Mes modules :" >> data/C$id/common.yaml
      for i in ${listemodules[@]}; do
        echo -e "  - ${listemodules[i]}" >> data/C$id/common.yaml
      done
    fi

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour

    très rapidement (lu en diagonale) : ne faudrait-il pas que le read module soit dans la boucle??? En tout cas une boucle sur while [ $module != "Fin" ] alors que la variable "module" n'est pas modifiée se dirige fortement sur une boucle qui soit ne se commence jamais, soit ne se termine jamais...

    Et on met toujours les string entre quotes => while [ "$module" != "Fin" ]. Ca permet au code de ne pas planter si la variable est vide ou inexistante.
    Et peut-être aussi restaurer l'IFS d'origine une fois qu'on n'en a plus besoin, car le shell, lui, en a besoin...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    recherchemod ne sert à rien. if grep -q directement.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    RemplirTableau non plus ne sert à rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec $1                                        # retour à la ligne 96
    tu es sûr de ça ?
    Citation Envoyé par help exec
    Remplace le shell par la commande fournie.
    d'autant que cette fonction n'a pas d'argument.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [VB6] Appel d'une fonction dans un module d'une dll
    Par speedster dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/06/2006, 17h37
  2. pb d'ajout du module XML-Writer
    Par peppena dans le forum Modules
    Réponses: 4
    Dernier message: 04/05/2006, 18h10
  3. [Langage] Ajout de modules : quelle techno ?
    Par vulquin dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 04/05/2006, 16h33
  4. [LDAP] comment ajouter un module PHP
    Par sezar dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/03/2006, 17h45
  5. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo