J'imagine que ton script avec une boucle while ressemble à ça:
while getopts abc: option
do
case $option in
a)echo a;;
b)echo b;;
c)echo $OPTARG;;
*)echo "pas d'options";;
esac
done
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:
while getopts abc: option
do
case $option in
a)echo a;;
b)echo b;;
c)echo $OPTARG;;
esac
done
if [ "$OPTIND" -eq 1 ]
then
echo "pas d'option"
fi
# Re: passage d'option
Posté par netsurfeur . En réponse au message passage d'option. É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: