bash getopts avec de multiples options obligatoires
Est-il possible d'utiliser getopts processus de plusieurs options? Par exemple, myscript -iR ou myscript -irv.
Aussi, j'ai une situation où basée sur une condition script aurait besoin de l'option obligatoire. Par exemple, si l'argument de script est un répertoire, j'ai besoin de préciser -R ou-r option ainsi que toutes les autres options (myscript -iR mydir ou myscript -ir mydir ou myscript -i-r mydir ou myscript -i-R mydir), dans le cas d'un fichier seulement -je est suffisante (myscript -je monfichier).
J'ai essayé de chercher mais n'a pas obtenu toutes les réponses.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez concaténer les options que vous fournissez et
getopts
va les séparer. Dans votrecase
à la déclaration de la poignée de chaque option individuelle.Vous pouvez définir un indicateur lorsque les options sont vus et assurez-vous obligatoire "options" (!) sont présents après le
getopts
boucle est terminée.Voici un exemple:
Cela représente une référence complète de la mise en œuvre d'un
getopts
de la fonction, mais n'est qu'une esquisse d'une plus grande script.$options
, mais pas d'entrée dans lecase
déclaration et dans le dernier, une option a été fournie ne correspond pas à n'importe quel caractère dans$options
.$
dans l'arithmétique de blocs, de sorte que vous pouvez juste faireshift $((OPTIND-1))