Utiliser getopts dans Bash Script
-
Options d’analyse avec des arguments dans Bash
getopts
-
Options d’analyse sans arguments dans Bash
getopts
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.