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 :

[bash] Création de fonction avec arguments.


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut [bash] Création de fonction avec arguments.
    Bonjour à tous

    Une grosse épine dans le pied, je fais actuellement des tp sur la programmation en batch sur linux.
    Et voici un énoncé auquel je ne comprends rien mais alors rien du tout.
    J'ai du le lire et le décortiquer des heures durant mais rien !!!!
    Alors quelqu'un ou quelqu'une pourra peut-être m'aider à résoudre le mystère.
    Bien à vous les amis et en vous remerciant d avance .

    Voici le tp :
    Ecrivez une fonction logger prenant 2 paramètres et écrivant en fonction du premier paramètre, le second dans la console en couleur.
    Le premier paramètre prend deux valeurs: INFO qui affichera du vert, ou ERREUR qui affichera du rouge.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 418
    Par défaut
    Bonjour et bienvenue,

    Que ne comprends tu pas dans l'énoncé ?

    Le but est de créer une fonction qui:
    • Prend 2 arguments
    • Le premier ne peut avoir que 2 valeurs ( INFO ou ERREUR)
    • Elle doit afficher le 2ème arguments en rouge si le premier est ERREUR ou en vert si le PREMIER est INFO

    Donc, tu dois faire une fonction qui controle qu'elle a bien 2 et seulement 2 arguments en entrée, que le premier argument est soit "INFO" soit "ERREUR" et si tout ça est ok, afficher le second de la couleur qu'il faut.

    Donc, tu as besoin de savoir tester un nombre d'arguments, tester la valeur d'une chaine pour un choix, et afficher une chaine de caractère en vert ou en rouge puis rétablir la couleur par défaut.
    Et aussi que doit faire la fonction si les arguments en entrée ne respecte pas les règles...

    Un bout de code est aussi le bienvenue, si tu veux de l'aide mais dis toi qu'ici, personne ne fera ton exercice à ta place, par contre on peut t'aider à résoudre ce que tu ne comprends pas.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    pour commencer merci pour ta réponse disedorgue
    cela m a enormement aider dans la compréhension de l exercice.
    je débute en programmation et rien ne vaut de la vulgarisation
    qui puissse me permettre de comprendre ce qu'il y a a faire.
    aussi un grand merci.

    voici ce que j'ai tenter mais ca ne marche pas
    sans la boucle conditionnel while j arrive a avoir info et erreur dans leur couleur respective

    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
    var1= info erreur
    var2=$1
     
    while  [ var2 != "info" ] && [ var 2 != "erreur" ]
    do
    echo "c'est n 'est pas bon" 
     
    done 
     
    if [ var1="info" ]
    then 
    echo -e "\033[32minfo\033[0m"
    fi
     
    if [ var1="erreur" ]
    then 
    echo -e "\033[31merreur\033[0m"
    fi
    pensez vous que je sois sur la bonne voie

    bien a vous les amis

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    je n ai pas mis
    la structure de la fonction
    car pour le moment j essaie de tester sur le shell
    mes differentes tentatives

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    la syntaxe de ton script n'est pas cohérente.

    pourquoi ne pas faire des tests dans le terminal ? en commençant simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ var="etc..."
    $ echo var
    var
    $ echo "$var"
    etc...
    et, on écrit un algorithme, ensuite on écrit le code.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    pourquoi est ce que le deuxieme bloc d'instruction
    elif n est pas pris en compte , il ne me retourne que des erreur en rouge
    j 'ai ma boucle qui recommence si on ne rentre pas info ni erreur
    mais pas d'affichage de info si je rentre erreur

    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
    read -p  'info ou erreur :' var1
     
    while  [ $var1 != "info" ] &&  [ $var2 != "erreur" ]
    do
    read -p 'info ou erreur: ' var1
    done 
     
    if [ var1="erreur" ]  
    then
    echo  -e "\033[31merreur\033[0m"
     
    elif [ var1="info" ]
    then 
    echo -e "\033[32minfo\033[0m"
     
    fi

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    qu'est censée faire la boucle while ?

    il n'est pas question dans l'énoncé d'utiliser des variables, mais de tester le nombre paramètres positionnels de la fonction (ou du script), et la valeur du premier.

    écrit un algorithme (le raisonnement de ton script) qu'on validera (ou pas), ensuite on passera au code.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    je ne peux rentrer qu un seul parametre a la fois sur ma ligne de controle,
    je nomme le premier parametre positionnel $1 info et lui attribue la couleur verte , je nomme le deuxieme parametre
    positionel 2 $2 erreur et lui attribut la couleur rouge.
    en fonction de leur positionement ils prennent soit la couleur du parametre positionel $1 soit la couleur du parametre positionel $2

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    les éclaircissements apportés par disedorgue n'ont pas été compris.

    tu dois créer une fonction, qui prend deux arguments :
    • le premier définit la couleur, et
    • le deuxième est une chaîne quelconque à colorer.

    l'exécution doit donner ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ laFonction INFO "peu importe"
    peu importe
    $ laFonction ERREUR "peu importe"
    peu importe

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    il me faut donc ecrire deux fonction differente ?

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    je retire ma question

  12. #12
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    non en fait je reitere ma question .
    desolée je suis perdu , je dois avoir l 'air nulle mais
    je veux vraiment comprendre

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    tu écris une seule fonction, qui va tester que la valeur du premier paramètre positionnel vaut INFO ou ERREUR,
    et, selon cette valeur, va définir la couleur à utiliser pour afficher le second paramètre positionnel.

  14. #14
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    j y arrive pas
    j ai juste envie de ma tirer une balle

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    montre-nous ce que tu as fait. Là, on ne peut pas juger...

    comment compares-tu la valeur d'une variable à une chaîne ?

  16. #16
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    la je declare mes deux valeur possible sur le premier parametre positionel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ $1 = erreur ] && [ $1 = info ]

  17. #17
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    et pour la suite si je fais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [  erreur = $1 ] && [ info = $1 ]
    then 
    echo  -e "\033[31m$1\033[0m"
    else
     echo -e "\033[32m$1\033[0m"
    fi

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    $1 est égal à INFO, OU à ERREUR, pas ET.

    =>
    si "$1" vaut "INFO"
    alors
    il y a une action
    autre_si "$1" vaut "ERREUR"
    il y a une autre action
    finsi

    d'où l'importance de rédiger un algorithme !!!

  19. #19
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    if [ $1="info" ]
    then
    echo -e "\033[32minfo\033[0m"
    elif [ $1="erreur" ]
    then
    echo -e "\033[31merreur\033[0m"
    fi

  20. #20
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Par défaut
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [  $1="info" ] 
    then 
    echo -e "\033[32minfo\033[0m"
    elif [  $1="erreur" ] 
    then 
    echo -e "\033[31merreur\033[0m"
    fi

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/03/2014, 10h38
  2. Création fonction avec argument dans une classe
    Par Général03 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 30/06/2009, 10h57
  3. onChange et fonction avec arguments
    Par pierre.egaud dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2006, 12h02
  4. DLL export de fonction avec argument
    Par slate dans le forum C
    Réponses: 3
    Dernier message: 31/05/2006, 11h36
  5. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 09h04

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