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] Parametres et options


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Par défaut [Bash] Parametres et options
    Bonjour,

    Voulant améliorer un script, je souhaite passer par l'utilisation d'options, via getopts.
    Jusqu'à présent, j'utilisais des paramètres fixes, c'est à dire que script prenait 3 paramètres et fonctionnait très bien.
    Depuis que j'essaye de mettre en place getopts, il ignore celui (pas très contrariant) :
    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
    35
    #!/bin/bash
     
    EXPECTED_ARGS=3
    E_BADARGS=65
    ID=""
     
    while getopts :i: option
    do
        case "$option" in
        i)  ID=$OPTARG
             ;;
        :) echo "id non present"
    	exit 4
            ;;
        \?) echo "Option incorrect"
            exit 5
            esac
    done
     
    if [ $# -lt $EXPECTED_ARGS ]
    then
      echo "Usage: $0 nom user password"
      exit $E_BADARGS
    fi
     
    if [ -z $ID]
      then ID="dfghj"
    fi
     
    echo "Param 1 : $1"
    echo "Param 2 : $2"
    echo "Param 3 : $3"
    echo "Param ID : $ID"
     
    exit
    Comme vous pouvez le voir, j'essaye juste avec un paramètre optionel i, mais dans l'absolu j'aimerais que le paramètre soit id (enfin, plus d'une lettre, sans pour autant avoir le double tiret).
    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    Bonjour,

    dans l'absolu j'aimerais que le paramètre soit id
    getopts ne sait pas faire ça.
    mais getopt, lui, oui. c'est une commande externe.

    il ignore celui (pas très contrariant) :
    il manque des mots dans ta phrase ? je ne comprend pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Par défaut
    Re,
    Bon, je me contenterai d'options avec une seule lettre alors.

    Dans mon exemple, que l'on mette "-a" à la place de "-i", "-i" tout seul ou avec un argument, il met la string par défaut : c'est comme s'il ne rentrait jamais dans la boucle while pour analyser les arguments.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    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
    $ cat getopts.encore
    #!/bin/bash
     
    while getopts :i: opt
    do
       case $opt in
          i) echo $opt $OPTARG $OPTIND;;
          ?) echo erreur; break;;
       esac
    done
     
    shift $((OPTIND-1))
     
    echo $1
    $ ./getopts.encore -i foo -i bar baz
    i foo 3
    i bar 5
    baz
    $ ./getopts.encore -i 
    erreur
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Par défaut
    Re,

    Alors, en fait, il faut mettre les paramètres optionnels au début et ceux obligatoires à la fin.
    Merci (surtout N_BaH).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/10/2009, 13h02
  2. Réponses: 3
    Dernier message: 17/04/2009, 10h59
  3. [WD-2007] Options et parametres par defaut
    Par sami_b dans le forum Word
    Réponses: 4
    Dernier message: 31/03/2009, 15h15
  4. Réponses: 6
    Dernier message: 05/10/2005, 14h22
  5. Une option en parametre de scripts...
    Par ptitBoutchou dans le forum Linux
    Réponses: 4
    Dernier message: 27/05/2004, 16h14

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