Définition d'une option

Pour getopts, une option est composée d'un caractère précédé du signe "+" ou "-".

Premier exemple :

$ ls -l *.sh

Par exemple, pour la commande ls, "-l" est une option et "*.sh" est un argument.
Une option peut fonctionner seule ou être associée à un argument.

Second exemple :

Le script suivant détail la manière d'utiliser la commande getopts.

$ 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          esac
    30  done
    31  echo "Analyse des options terminée"
    32  exit 0
$

L'appel à la commande getopts récupère l'option suivante et retourne un code vrai tant qu'il reste des options à analyser.
La liste des options utilisables avec ce script sont définies à la ligne 3 (getopts "abcd:e:" option). Il s'agit des options -a, -b, -c, -d et -e.
Le caractère ":" inscrit après les options "d" et "e" (getopts "abcd:e:" option) indique que ces options doivent être suivies obligatoirement d'un argument.
La variable "option" (getopts "abcd:e:" option) permet de récupérer la valeur de l'option en cours de traitement par la boucle while.
La variable réservée "$OPTIND" contient l'indice de la prochaine option à traiter.
La variable réservée "$OPTARG" contient l'argument associé à l'option.

Exécution du script avec des options valides :

$ ./test_getopts_1.sh -a -b -c -d toto -e tata,tutu
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 e
Exécution des commandes de l'option e
Liste des arguments à traiter : tata,tutu
Indice de la prochaine option à traiter : 8
Analyse des options terminée
$

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.