Re: Contenu de $OPTARG avec getopts pour analyser les options d'un script en bash
Le vendredi 4 octobre 2024 à 19:39, didier gaumet <didier.gaumet@gmail.com> a écrit :
> Le 04/10/2024 à 18:37, benoit a écrit :
>
> > Bonjour,
> >
> > Avec getopts, je ne sais pas comment on fait pour récupérer de multiple
> > arguments dans $OPTARG, j’ai regardé un peu sur le net, mais je ne
> > comprends pas bien.
> >
> > Si par exemple, je voulais écrire un script qui concatène des fichiers
> > dans le fichier destination.txt
> > % ./monscript -i fichier1.txt fichier2.txt -o destination.txt
> >
> > $OPTARG ne contient que fichier1.txt, comme si fichier2.txt, n’était pas
> > analysé par getopts
> >
> > Merci d’avance
> >
> > –
> > Benoît
>
>
> Avertissement: j'y connais rien, je n'écris pas de scripts bash, je
> n'utilise pas $OPTARGS
>
> par contre, c'est peut-être moi qui ne comprends pas mais d'après les docs:
> https://linuxsimply.com/bash-scripting-tutorial/functions/script-argument/bash-optarg/
> file://///usr/share/doc/util-linux/examples/getopt-example.bash
> et les pages man getopt(1 et 3)
Pour l'instant, je intéresse à getopts (avec un "s") qui fait partie du bash, mais si getopt répond mieux à ce que je veux faire, je suis prenneur
> (tout ça malheureusement parcouru en diagonale)
>
> 1) j'ai l'impression que $OPTARGS ne retourne que la valeur du paramètre
> choisi (désolé si j'enfonce une porte ouverte):
> voir exemple 1 sur linuxsimply
>
> 2) l'exemple du fichier /usr/share/[...] pourrait suggérer (mais j'ai
> peut-être rien compris) que lorsque un paramètre comprend des
> séparateurs (espaces,...) il faut utiliser "$@"
>
Et testant ce que retourne "$@", j'ai l'impression (je découvre et je n'y connais rien, dis moi si je me trompe) que "$@" c'est stdin "en vrac" tout ce qui vient après la commande et que getopts et là pour m'aider à traiter les options.
----
#!/bin/bash
echo $@
----
% ./teststdin -o destination.txt fichier1.txt fichier2.txt
-o destination.txt fichier1.txt fichier2.txt
Merci,
--
Benoît
Reply to: