Breadcrumbs

shell-dev

1. Example getopts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while getopts ":hf:g:" option; do
                case $option in
                        f)
                                echo "[OPTION] f with argument: $OPTARG"
                                ;;
                        g)
                                echo "[OPTION] g with argument: $OPTARG"
                                ;;
                        h)
                                usage
                                ;;
 
                        :)
                                echo "[ERROR] option : $OPTARG requiert un argument"
                                exit 2
                                ;;
 
                        \?)
                                echo "[ERROR] option invalide: $OPTARG"
                                exit 2
                                ;;
                esac
        done

2. explication

 

la chaine passé à getopt permet de définir les options:

  • le 1er ":" signifie de laisser l'utilisateur gérer les erreurs. sinon getopts s'en charge
  • "h"  signifie que l'option "h" est valide
  • "f:" signifie que l'option "f" est valide et qu'elle attend un argument
  • "g:" même chose

on peut donc lancer le script ainsi:

1
2
3
4
./script -h
./script -h -f toto
./script -g titi
./script -g titi -h -f toto

L'utilisation d'une option invalide (non comprise dans la liste fournise à getopts) sera rejeté.