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 :

getopts et default


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 35
    Points
    35
    Par défaut getopts et default
    Bonjour j'ai fouillé partout sur internet et je ne trouve pas le problème a ma solution TT .
    Le fait est que je dois faire un simple test pour le mode absence d'option.

    Alors j'ai fais quelque chose de simple j'ai vu plein de truc ?) /?) [?].
    Mais ca ne marche pas .
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while getopts abc option
    do
         case $option in
         a) echo "blabla"
            ;;
         b) echo "...";;
         c) echo "...";;
         /?)echo " par defaut"
              exit 1;;
         esac 
         shift

  2. #2
    Invité(e)
    Invité(e)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Rebonjour non ca ne marche pas le mieux serais que vous me donniez un code simple avec le defaut qui marche que je modifierais ensuite en fait svp .
    J'ai même essayé de lancer le sh avec bash mais ça ne change rien.

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par matthew974 Voir le message
    ca ne marche pas le mieux serais que vous me donniez un code simple avec le defaut qui marche que je modifierais ensuite en fait svp.
    En fait, ce que tu cherche à faire n'est pas possible avec getopts directement.

    Avec le script suivant, tu peux juste savoir si une des options n'est pas reconnue :

    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
    #! /bin/bash
     
    while getopts ab option
    do
     case $option in
      a)
       echo "option a"
       ;;
      b)
       echo "option b"
       ;;
      \?)
       echo "autre"
       ;;
     esac
    done
    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
    >./script.sh -a
    option a
    
    >./script.sh -b
    option b
    
    >./script.sh b
    
    >./script.sh -1
    ./script.sh: illegal option -- 1
    autre
    
    >./script.sh
    
    >
    Pour savoir le nombre d'arguments -et donc l'absence d'argument- on peut utiliser : $#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #! /bin/bash
     
    echo $# "argument(s)"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >./script.sh
    0 argument(s)
     
    >./script.sh 1
    1 argument(s)
     
    >./script.sh 1 2
    2 argument(s)
     
    >./script.sh 1 2 3
    3 argument(s)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Merci en effet ce que tu dis viens de m'éviter de creuser encore des heures et des heures cette fausse piste ,je vais faire un if tout bête ça ira.

    PS :Une dernière question comment faire en fait pour avoir une option spéciale ?ab qui a sa propre instruction comme ça :
    a)echo a
    b)echo b
    ab) echo blabla

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Points : 31
    Points
    31
    Par défaut
    Bonjour,
    getops gère les options courtes, comme -a ou -b, par contre si tu mets -ab, getops considérera 2 options (a puis b).
    Si tu veux utiliser des options longues (par exemple : --ab) avec ou sans options, il faut connaître l'esprit de getopts (j'ai eu du mal aussi).
    Pour les options longues sans arguments, il faut ajouter dans la liste d'options le tiret suivi des 2 points -: afin de créer une option qui est - (et non une option avec une lettre), ce tiret suivi des 2 points acceptera un argument $OPTARG (qui sera dans notre exemple ab). Voir ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while getopts ab-: OPTION
    Ensuite, tu crée une option - utilisant la commande case et la variable OPTARG comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    -) case $OPTARG in
          all) f_a_all
              ;;
       esac
    ;;
    J'ai mis 2 commentaires sur getopts dans la partie "trucs et astuces", j'en prépare un troisième expliquant l'utilisation des options longues avec arguments (et oui, la solution existe) qui sera prochainement mis à disposition.

Discussions similaires

  1. Valeur par default dans un input file ?
    Par alainme dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 11/02/2005, 14h31
  2. équivalent à getopts de bash
    Par narmataru dans le forum Modules
    Réponses: 2
    Dernier message: 27/01/2005, 08h49
  3. [VB6] Détecter le navigateur par default
    Par GeDeon35 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/12/2004, 16h52
  4. [bioinfo] fonction getoption
    Par perlaud dans le forum Bioinformatique
    Réponses: 13
    Dernier message: 30/07/2004, 16h07
  5. [reseaux] exemple avec getopts
    Par perlaud dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 03/06/2004, 13h35

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