je viens de decouvrir comment passer les options pour un script shell:
donc quand je fais
getopts abc: option
case $option in
a)echo a;;
b)echo b;;
c)echo $OPTARG;;
*)echo pas d'options;;
esac
pas de probleme.
pour pouvoir passer plusieurs options à la suite genre ./toto -ab
je mets tout ça dans une boucle while
mais dans ce cas là, si j'execute le script sans options il ne fait rien... alors qu'avec une ou plusieurs il marche sans probleme
qu'est-ce que je dois faire ?
merci
# Re: passage d'option
Posté par netsurfeur . Évalué à 3.
Si tu ne passes pas d'argument, getopts renvoie faux dès le premier appel et le case n'est jamais exécuté, le message "pas d'options" ne s'affiche donc pas.
getopts renseigne une variable supplémentaire OPTIND qui permet de savoir combien d'arguements ont été traités. Tu devrais arriver à détecter l'absence d'option en faisant:
[^] # Re: passage d'option
Posté par Treepwood . Évalué à 1.
c'est vrai qu'en réfléchissant un peu, ça parait logique...
mais de toute façon j'ignorais l'existence d'un tel $OPTIND
[^] # Re: passage d'option
Posté par netsurfeur . Évalué à 2.
Moi aussi, je l'ignorais mais man getopts m'a mis sur la bonne piste.
Comme quoi, RTFM ça aide ;)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.