|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce groupe, avec parfois des réponses du genre "getop ne permet pas cela" alors comment fait on pour le faire ? parce que il y a un tas de programme qui les utilisent (pratiquement toutes les commandes de bases unix : ls, chown,...), je n'ai pas réussi à trouver de réponse claire pour gérer tout mes paramètre... (je précise que je suis un peut débutant et que je ne comprend pas encore le lisp, par contre le français, le c, l'algo et le java, y a pas de soucis )merci |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
"n@pster" wrote in message
<1169034324.503757.262560@m58g2000cwm.googlegroups .com>: > J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce > groupe, avec parfois des réponses du genre "getop ne permet pas cela" Il me semble bien. > alors comment fait on pour le faire ? parce que il y a un tas de > programme qui les utilisent (pratiquement toutes les commandes de bases > unix : ls, chown,...), je n'ai pas réussi à trouver de réponse > claire pour gérer tout mes paramètre... ls, chown et consorts ne prennent pas d'options à plusieurs arguments: il prennent des arguments qui ne sont pas des options. Tout ce qui reste après le passage de getopt, ce sont des arguments qui ne sont pas des options. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
"n@pster" wrote in message
<1169034324.503757.262560@m58g2000cwm.googlegroups .com>: > J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce > groupe, avec parfois des réponses du genre "getop ne permet pas cela" Il me semble bien. > alors comment fait on pour le faire ? parce que il y a un tas de > programme qui les utilisent (pratiquement toutes les commandes de bases > unix : ls, chown,...), je n'ai pas réussi à trouver de réponse > claire pour gérer tout mes paramètre... ls, chown et consorts ne prennent pas d'options à plusieurs arguments: il prennent des arguments qui ne sont pas des options. Tout ce qui reste après le passage de getopt, ce sont des arguments qui ne sont pas des options. D'ailleurs, si tu y réfléchis bien, quand tu lis: frobnicate --exclude foo bar baz qux comment sais-tu si bar est un argument à frobnicate, ou bien un argument à l'option --exclude? Ça n'est pas possible. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Ba alors comment fonctionne ls ?
Parce que je peux faire ls -l monFichier1 monFichier2 et ça marche Nicolas George a écrit : > "n@pster" wrote in message > <1169034324.503757.262560@m58g2000cwm.googlegroups .com>: > > J'ai vu qu'il y avait déjà eu plusieurs post à ce sujet dans ce > > groupe, avec parfois des réponses du genre "getop ne permet pas cela" > > Il me semble bien. > > > alors comment fait on pour le faire ? parce que il y a un tas de > > programme qui les utilisent (pratiquement toutes les commandes de bases > > unix : ls, chown,...), je n'ai pas réussi à trouver de réponse > > claire pour gérer tout mes paramètre... > > ls, chown et consorts ne prennent pas d'options à plusieurs arguments :il > prennent des arguments qui ne sont pas des options. Tout ce qui reste après > le passage de getopt, ce sont des arguments qui ne sont pas des options. > > D'ailleurs, si tu y réfléchis bien, quand tu lis : > > frobnicate --exclude foo bar baz qux > > comment sais-tu si bar est un argument à frobnicate, ou bien un argument à > l'option --exclude ? Ça n'est pas possible. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
2007-01-18, 00:41(-08), n@pster:
> Ba alors comment fonctionne ls ? > Parce que je peux faire > ls -l monFichier1 monFichier2 > et ça marche [...] [Merci de poster a l'endroit] monFichier2 et monFichier2 ne sont pas des arguments de l'option -l, -l ne prend pas d'arguments. monFichier1 et monFichier1 sont les arguments qu'il reste apres parsing des options. Il est impossible qu'une option prenne un nombre variable d'arguments a moins que ce nombre soit specifié d'une facon ou d'une autre comme: cmd -l 3 a b c d e pour dire que -l prend ici 3 arguments (et que donc d et e sont les arguments restant). Mais getopt ne permet pas ca. getopt definit une convention de passage d'options standard, qu'il vaut mieux essayer de suivre pour garder une coherence. Si tu veux passer plusieurs arguments a une option, utilise plutot un separateur: ps -p 123,124,234 Ici, -p prend un argument (pour getopt) mais le code de -p le decoupe ensuite en suivant les virgules. -- Stéphane |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Stephane Chazelas wrote in message
<slrnequde3.4ds.stephane.chazelas@spam.is.invalid> : > Si tu veux passer plusieurs arguments a une option, utilise > plutot un separateur: > > ps -p 123,124,234 > > Ici, -p prend un argument (pour getopt) mais le code de -p le > decoupe ensuite en suivant les virgules. Berk. Ça veut dire écrire un parseur, et c'est l'horreur si on veut avoir un des arguments qui contient le délimiteur. Je trouve: ps -p 123 -p 124 -p 234 nettement préférable. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
n@pster wrote:
Salut, > j'utilise getop_long pour parser les arguments passés à mon programme [...] > 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 découvert il y a un moment argp qui, il me semble et pour autant que ma mémoire ne soit pas trop mauvaise, permet de spécifier le nombre d'arguments à une option. Globalement, j'ai eu beaucoup de mal à piger comment ça marchait et je m'en suis sorti avec les man et la doc chez Gnu : http://www.gnu.org/software/libc/man...gram-Arguments Mais il me semble aussi que d'une part argp ne permet pas d'avoir un nombre variable d'arguments, pour cause des limitations décrites par les autres, et d'autre part que c'est un truc Gnu et donc pas forcément disponible sur les autres systèmes (en particulier, j'ai souvenir de stations SunOS où ça n'existait pas). Si ça peut t'aider... -- Rémi Moyen |
|
![]() |
| Outils de la discussion | |
|
|