[shell] utilisation de getopts ?

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. 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.
    1. Contributeur
      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