Hello !
J'ai un p'tit problème avec l'utilisation de la fonction getopts ...
En gros, ça se passe comme ça:
1/ Dans le script principal, il y a entre autres :
(...)
FPATH="./scripts/"
typeset -fu Fonction1
typeset -fu Fonction2
(..)
# Une première boucle sur les arguments
while getopts a:b:c: opt; do case (...) esac; done
(...)
Fonction1 -d <Arg1> -e <Arg2> -f <Arg3>
(...)
2/ Dans le script Fonction1
OPTIND=1
# Une autre boucle sur les arguments
while getopts d:e:f: opt; do case (...) esac; done
(...)
Fonction2 -g <Arg1> -h <Arg2> -i <Arg3>
3/ Dans le script Fonction2
OPTIND=1
# Une autre boucle sur les arguments
while getopts g:h:i: opt; do case (...) esac; done
(...)
> Et c'est là qu'apparait le problème ... les identifiants (a,b,c, ...) ne sont pas forcément les mêmes, l'index OPTIND est bien remis à 1 avant chaque boucle sur getopts ...
Mais dans la deuxième fonction, j'ai systématiquement des erreurs du style :Sh Unknown option -d, alors que je n'utilise pas le -d.
Si j'essaie de faire passer le premier argument, par exemple, avec l'option -d en modifiant tout ce qu'il faut pour ça, je me rends compte en l'affichant que l'argument pris en compte est celui de l'appel d'au-dessus (ie celui donné lors de l'appel de Fonction1, pas de Fonction2).
Qu'est-ce qui se passe ? On dirait que getopts ne prend pas en compte le bon appel ...![]()
Partager