[shell] utilisation de getopts ?

Fermé
mortelrdv - 1 mars 2009 à 10:42
 kadouille - 27 oct. 2010 à 10:24
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

2 réponses

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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
1 mars 2009 à 13:17
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