Utiliser getopts dans Bash Script

Fumbani Banda 19 janvier 2022
  1. Options d’analyse avec des arguments dans Bash getopts
  2. Options d’analyse sans arguments dans Bash getopts
Utiliser getopts dans Bash Script

Ce tutoriel montre l’utilisation de getopts dans les scripts bash en analysant les options avec des arguments et en analysant les options sans arguments.

Options d’analyse avec des arguments dans Bash getopts

Les lettres n et c ont toutes deux : devant elles. Cela signifie que nous nous attendons à ce qu’un argument soit fourni chaque fois que l’option -n ou -c est utilisée. La variable opt, contient la valeur de l’option actuelle qui a été analysée par getopts.

while getopts n:c: opt
do
    case "${opt}" in
          n) name=${OPTARG};;
          c) country=${OPTARG}
     esac
done
echo "I am $name";
echo  "And I live in $country";

Lorsque nous exécutons le script, l’option -n fournit John comme argument tandis que l’option -c fournit Britain comme argument.

bash flags.sh -n John  -c Britain

Production :

I am John
And I live in Britain

Options d’analyse sans arguments dans Bash getopts

Cela utilisera un simple script bash qui imprime le script utilisation lorsque l’option -h est passée, et il imprime le contenu du dossier lorsque l’option -p est utilisée avec un chemin spécifié vers le dossier comme argument.

Le premier : signifie que getopts ne rapportera aucune erreur. Au lieu de cela, nous traiterons les erreurs nous-mêmes. La lettre p a un : devant elle, contrairement à la lettre h. Cela signifie que chaque fois que l’option -p est utilisée, nous attendons un argument, mais l’option -h peut être utilisée sans argument.

Lorsque l’option -h est passée, elle invoque la fonction usage. L’option -p affecte l’argument passé à la variable chemin, qui est ensuite passé à la fonction list en tant qu’argument. Le * spécifie l’action à entreprendre chaque fois qu’une option qui n’est pas -h ou -p est passée.

#!/bin/bash

function usage {
       printf "Usage:\n"
       printf " -h                               Display this help message.\n"
       printf " -p <folder path>                 List contents of specified folder.\n"
       exit 0
}

function list {
       ls -l $1
}

while getopts :p:h opt; do
    case ${opt} in
      h)
         usage
        ;;
      p) path=${OPTARG}
         list $path
         #echo $folder
       ;;
      *)
          printf "Invalid Option: $1.\n"
          usage
       ;;
     esac
done

Exécutez le script avec l’option -h :

 ./getopts.sh -h
Usage:
 -h                               Display this help message.
 -p <folder path>                 List contents of specified folder.

Exécutez le script avec l’option -p :

./getopts.sh -p /home/fumba/example
total 0
-rw-r--r-- 1 fumba fumba    0 Nov  1 21:43 file1.txt
-rw-r--r-- 1 fumba fumba    0 Nov  1 21:43 file2.txt
drwxr-xr-x 1 fumba fumba 4096 Nov  1 21:43 pictures

Exécutez le script avec une option invalide, -k :

./getopts.sh -k
Invalid Option: -k.
Usage:
 -h                               Display this help message.
 -p <folder path>                 List contents of specified folder.
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Article connexe - Bash Script