Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
dev:bash:arguments_et_options_de_script [2023/02/10 09:46] – supprimée - modification externe (Unknown date) 127.0.0.1 | dev:bash:arguments_et_options_de_script [2023/02/10 17:23] (Version actuelle) – Complétion section getopts yoann | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ====== Gestion des options et arguments dans les scripts Bash ====== | ||
+ | |||
+ | Les arguments transmis au script bash courant sont accessibles via les variables **$1** à **$n**. La variable **$@** désigne l' | ||
+ | |||
+ | |||
+ | **getopts** et **getopt** sont deux moyens similaires mais non identiques pour gérer de façon avancée les options et les arguments passés aux scripts. | ||
+ | |||
+ | * **getopts** est intégré a l’interpréteur **bash** (primitve). | ||
+ | * **getopt** est un binaire. | ||
+ | |||
+ | La gestion des options n'est pas triviale si l'on souhaite un usage souple et conforme aux standards. C'est la raison d' | ||
+ | |||
+ | <code bash> | ||
+ | $ ./ | ||
+ | $ ./ | ||
+ | $ ./ | ||
+ | $ ./ | ||
+ | $ ./ | ||
+ | $ ./ | ||
+ | </ | ||
+ | |||
+ | Les difficultés que pointe cet exemple: | ||
+ | * Ordre des options/ | ||
+ | * La concaténation des options courtes | ||
+ | * La gestions des options courtes ou longues | ||
+ | |||
+ | ===== Utilisation de getopts ===== | ||
+ | |||
+ | **getopts** est une primitive de Bash: | ||
+ | < | ||
+ | type getopts | ||
+ | getopts est une primitive du shell | ||
+ | </ | ||
+ | |||
+ | Utilisée avec les commandes **while** et **case**, elle va permettre la gestion des options et de leur argument saisis sur la ligne de commande du script. | ||
+ | |||
+ | Le détail du fonctionnement de **getopts** est disponible dans l'aide via '' | ||
+ | |||
+ | La commande **case** permet d' | ||
+ | |||
+ | La structure générale est donc la suivante: | ||
+ | <code bash> | ||
+ | # Mon script | ||
+ | |||
+ | # Si elle est trouvée sur la ligne de commande, | ||
+ | # l' | ||
+ | while getopts ": | ||
+ | do | ||
+ | case $opt_name in | ||
+ | h) # affiche l'aide et quitte | ||
+ | echo "Ceci est mon message d' | ||
+ | exit 0;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | |||
+ | echo " | ||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | ===== Utilisation de getopt ===== | ||
+ | |||
+ | Un script d' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Références ===== | ||
+ | |||
+ | * http:// | ||
+ | * https:// |