Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

getops_long avec plusieurs arguments

1 réponse
Avatar
n
coucou tout le monde,
j'utilise getop_long pour parser les arguments pass=E9s =E0 mon
programme (j'ai pris pour exemple le code de chown qui utilise aussi
cette fonction), mais je ne vois pas comment garer plusieurs fichiers
de cette mani=E8re :
./monProg --file fichier1 fichier2 fichier3
ou bien encore
./monProg --file *.ext
=E0 chaque fois, le programme retourne :
"This arguments are not options : fichier2 fichier3"
Ce qui est normal, mais comment faire pour lui faire prendre en compte
que apr=E8s un --file, il puisse y avoir plusieurs arguments ?

1 réponse

Avatar
Pascal Bourguignon
"" writes:

coucou tout le monde,
j'utilise getop_long pour parser les arguments passés à mon
programme (j'ai pris pour exemple le code de chown qui utilise aussi
cette fonction), mais je ne vois pas comment garer plusieurs fichiers
de cette manière :
./monProg --file fichier1 fichier2 fichier3
ou bien encore
./monProg --file *.ext
à chaque fois, le programme retourne :
"This arguments are not options : fichier2 fichier3"
Ce qui est normal, mais comment faire pour lui faire prendre en compte
que après un --file, il puisse y avoir plusieurs arguments ?


J'ai l'impression que ce n'est pas prévu.

En général, on a des options qui ont 0, ou 1 argument, et quand on a
traité toutes les options, il peut rester une liste d'arguments. Pour
pouvoir avoir dans cette liste des arguments qui commence par '-', on
peut séparer les options de cette liste avec un - ou -- tout seul.

Alors, tu pourrais avoir:

--file -- fic1 fic2 fic3 ... # --file ne prend pas d'argument, et
# indiquerait qu'on traite des fichiers
# au lieu de --directory ou --socket

--file fic1 -- other-fic2 other-fic3 ... # --file prend un argument distingué
# et il reste une liste.



Note que la syntaxe des GNU long ops, est que lorsqu'une option prend
un argument, on peut les coller ensemble:

--file=fic1

On pourrait passer plusieurs options --file:

--file=fic1 --file=fic2 --file=fic3

Mais on se rend bien compte que c'est idiot, autant ne mettre que les fichiers:

fic1 fic2 fic3

et oublier l'option --file qui n'a pas l'air de signifier grand chose.



--
__Pascal Bourguignon__ http://www.informatimago.com/
Cats meow out of angst
"Thumbs! If only we had thumbs!
We could break so much!"