Le vendredi 4 octobre 2024 à 19:39, didier gaumet <didier.gau...@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

Répondre à