[shell] utilisation de getopts ?

mortelrdv -  
 kadouille -
Bonjour,

pour essayer getopts, jai fait ceci (fichier titi.sh) :
while getopts "ab:o:" c ; do
        case $c in
          a) echo "OPTARG a"$OPTARG
             ;;
          b) echo "OPTARG b "$OPTARG
             ;;
          o) echo "OPTARG o"$OPTARG
             ;;
          \?)      echo "tototo"
             exit 2
             ;;
        esac
done


sh titi.sh -a -b -o jhghg

il m'affiche pas l'erreur et considere que -c est l'argument de b !! est ce une limitation de getopts ou une erreur de ma part ?

Merci
Configuration: Linux Suse
Firefox 3.0.1

2 réponses

  1. kadouille
     
    Salut !
    Cela va etre un peu tardif mais je viens de m'inscrire sur le forum, je faisais des recherches sur le getopt et paf je tombe sur ton probleme !
    Au cas ou ça servira a d'autres.
    Si à l'écran tu voulais obtenir :

    OPTARG a
    OPTARG b
    OPTARG o
    tototo

    Voici la correction à apporter à ton code :

    while getopts ":abo" c ; do
    case $c in
    a) echo "OPTARG a"$OPTARG
    ;;
    b) echo "OPTARG b "$OPTARG
    ;;
    o) echo "OPTARG o"$OPTARG
    ;;
    \?) echo "tototo"
    exit 2
    ;;
    esac
    done

    Et tu dois lancer la commande avec un "-" devant "jhghg" :

    sh titi.sh -a -b -o -jhghg

    Sans ce tiret, le dernier paramètre ne sera pas pris en compte comme étant une option pour le optarg.
    3
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    il me semble que c'est une contrainte de getopts, puisque b attend une option b: le champs suivant -b est considéré comme l'option de b
    0