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

Résolu/Fermé
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 - 10 août 2009 à 12:23
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 - 10 août 2009 à 14:39
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

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 12:31
Salut,

commande contient quoi?
0
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 4
10 août 2009 à 12:33
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 12:37
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 août 2009 à 12:52
Salut,

Et un truc du genre :
while read line
do
./commande "${line}"
done < <(./genere_liste)
Ça le fait pas ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
10 août 2009 à 13:27
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
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 4
10 août 2009 à 14:39
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