Pipe, argument, liste => Prise de tête :)

Résolu
gunbol Messages postés 52 Statut Membre -  
gunbol Messages postés 52 Statut Membre -
Bonjour,

J'ai une question toute bête:

J'ai une commande qui renvoie une liste avec des retours à la ligne
Example
./genere_liste
renvoie:
4560
45
5457
1042

J'ai une autre commande qui permet d'analyser chaque element un par un, mais il ne sait pas prendre une liste en STDIN
./commande 4560 => Ca marche
./genere_liste | ./commande => Ca marche pas

Ma question est la suivante: comment on fait pour rediriger une liste dans une commande afin qu'il exécute la commande en boucle.

Contrainte: il faut que cela tienne en une seule ligne de commande.

Merci d'avance pour votre aide.

Cordialement,

gunt
Configuration: Windows XP Internet Explorer 6.0

6 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    commande contient quoi?
    0
  2. gunbol Messages postés 52 Statut Membre 4
     
    Justement, je voudrais un truc qui marche à tous les coups :)

    Dans mon cas, c'est un pmap
    La liste contient des PID
    mais ca pourrait etre un print, un lsof -p ou autre chose
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Oui mais il faut que tu utilise un argument

    par exemple un fichier script.sh
    #!/bin/bash
    echo $1


    Et tu fais
    for i in $(././genere_liste);do ./script.sh $i;done
    --
    106485010510997108
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Et un truc du genre :
    while read line
    do
    ./commande "${line}"
    done < <(./genere_liste)
    Ça le fait pas ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    et avec xargs

    ./genere_liste | xargs -L 1 ./commande

    $ cat f1
    #!/bin/bash
    echo ++ $1 ++

    $ seq 1 10 | xargs -L 1 ./f1
    ++ 1 ++
    ++ 2 ++
    ++ 3 ++
    ++ 4 ++
    ++ 5 ++
    ++ 6 ++
    ++ 7 ++
    ++ 8 ++
    ++ 9 ++
    ++ 10 ++
    $
    0
  7. gunbol Messages postés 52 Statut Membre 4
     
    Hello,

    la commande xargs est exactement celle dont j'avais besoin :)

    J'avais dit que ma question était bête !

    Merci beaucoup à tout le monde.

    Gunth
    0