Lorsque l'argument d'une option est absent, la variable option est initialisée avec le caractère ":" et OPTARG contient la valeur de l'option concernée (ligne 29).
Exemple :
$ nl test_getopts_1.sh
1 #!/bin/bash
2
3 while getopts ":abcd:e:" option
4 do
5 echo "getopts a trouvé l'option $option"
6 case $option in
7 a)
8 echo "Exécution des commandes de l'option a"
9 echo "Indice de la prochaine option à traiter : $OPTIND"
10 ;;
11 b)
12 echo "Exécution des commandes de l'option b"
13 echo "Indice de la prochaine option à traiter : $OPTIND"
14 ;;
15 c)
16 echo "Exécution des commandes de l'option c"
17 echo "Indice de la prochaine option à traiter : $OPTIND"
18 ;;
19 d)
20 echo "Exécution des commandes de l'option d"
21 echo "Liste des arguments à traiter : $OPTARG"
22 echo "Indice de la prochaine option à traiter : $OPTIND"
23 ;;
24 e)
25 echo "Exécution des commandes de l'option e"
26 echo "Liste des arguments à traiter : $OPTARG"
27 echo "Indice de la prochaine option à traiter : $OPTIND"
28 ;;
29 :)
30 echo "L'option $OPTARG requiert un argument"
31 exit 1
32 ;;
33 \?)
34 echo "$OPTARG : option invalide"
35 exit 1
36 ;;
37 esac
38 done
39 echo "Analyse des options terminée"
40 exit 0
$
Exécution du script en oubliant l'argument de l'option -e
$ ./test_getopts_1.sh -a -b -c -d toto -e
getopts a trouvé l'option a
Exécution des commandes de l'option a
Indice de la prochaine option à traiter : 2
getopts a trouvé l'option b
Exécution des commandes de l'option b
Indice de la prochaine option à traiter : 3
getopts a trouvé l'option c
Exécution des commandes de l'option c
Indice de la prochaine option à traiter : 4
getopts a trouvé l'option d
Exécution des commandes de l'option d
Liste des arguments à traiter : toto
Indice de la prochaine option à traiter : 6
getopts a trouvé l'option :
L'option e requiert un argument
$