je voudrais pouvoir récupérer dans "mon_script" la commande précédente,
càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier".
Avec tous les arguments.
le 04/07/2012 à 08:51, Une Bévue a écrit dans le message <4ff3e7d6$0$16489$ :
soit la commande :
$ mon_bin mon_fichier | /path/to/mon_script
je voudrais pouvoir récupérer dans "mon_script" la commande précédente, càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier". Avec tous les arguments.
est-ce possible ?
Non, pas dans l'état. « | » envoie la sortie standard de ce qui est à gauche sur l'entrée de ce qui est à gauche. Par conséquent mon_script n'a aucune idée de la commande précédente.
si oui, comment ?
Si tu peux modifier mon_script, il faut que ce soit lui qui exécute « mon_bin mon_fichier », ta ligne de commande devient : /path/to/mon_script mon_bin mon fichier
un truc du genre : #!/bin/sh CMD="$@" echo "la commande est : $CMD" $CMD | cat
./test.sh grep @ test.sh la commande est : grep @ test.sh CMD="$@"
Ensuite, tout dépend de ce que tu veux faire mais comme tu ne l'as pas indiqué...
-- Benoit Izac
Bonjour,
le 04/07/2012 à 08:51, Une Bévue a écrit dans le message
<4ff3e7d6$0$16489$426a74cc@news.free.fr> :
soit la commande :
$ mon_bin mon_fichier | /path/to/mon_script
je voudrais pouvoir récupérer dans "mon_script" la commande
précédente, càd ce qu'il y a avant le pipe "|", ici "mon_bin
mon_fichier".
Avec tous les arguments.
est-ce possible ?
Non, pas dans l'état. « | » envoie la sortie standard de ce qui est
à gauche sur l'entrée de ce qui est à gauche. Par conséquent mon_script
n'a aucune idée de la commande précédente.
si oui, comment ?
Si tu peux modifier mon_script, il faut que ce soit lui qui exécute
« mon_bin mon_fichier », ta ligne de commande devient :
/path/to/mon_script mon_bin mon fichier
un truc du genre :
#!/bin/sh
CMD="$@"
echo "la commande est : $CMD"
$CMD | cat
./test.sh grep @ test.sh
la commande est : grep @ test.sh
CMD="$@"
Ensuite, tout dépend de ce que tu veux faire mais comme tu ne l'as pas
indiqué...
le 04/07/2012 à 08:51, Une Bévue a écrit dans le message <4ff3e7d6$0$16489$ :
soit la commande :
$ mon_bin mon_fichier | /path/to/mon_script
je voudrais pouvoir récupérer dans "mon_script" la commande précédente, càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier". Avec tous les arguments.
est-ce possible ?
Non, pas dans l'état. « | » envoie la sortie standard de ce qui est à gauche sur l'entrée de ce qui est à gauche. Par conséquent mon_script n'a aucune idée de la commande précédente.
si oui, comment ?
Si tu peux modifier mon_script, il faut que ce soit lui qui exécute « mon_bin mon_fichier », ta ligne de commande devient : /path/to/mon_script mon_bin mon fichier
un truc du genre : #!/bin/sh CMD="$@" echo "la commande est : $CMD" $CMD | cat
./test.sh grep @ test.sh la commande est : grep @ test.sh CMD="$@"
Ensuite, tout dépend de ce que tu veux faire mais comme tu ne l'as pas indiqué...
je voudrais pouvoir récupérer dans "mon_script" la commande précédente, càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier". Avec tous les arguments.
est-ce possible ?
oui et non, si la commande de gauche a terminée, c'est trop tard... et pire,
$ sleep 10 | ./getleft 16643 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND tv 16643 0.0 0.0 2996 620 pts/0 S+ 13:55 0:00 sleep 10
$ ls | ./getleft
$ cat /vmlinuz | ./getleft 16843 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND tv 16843 0.0 0.0 3000 600 pts/0 S+ 13:55 0:00 cat /vmlinuz
Le 04.07.2012 08:51, Une Bévue a écrit :
soit la commande :
$ mon_bin mon_fichier | /path/to/mon_script
je voudrais pouvoir récupérer dans "mon_script" la commande précédente,
càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier".
Avec tous les arguments.
est-ce possible ?
oui et non, si la commande de gauche a terminée, c'est trop tard... et
pire,
je voudrais pouvoir récupérer dans "mon_script" la commande précédente, càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier". Avec tous les arguments.
est-ce possible ?
oui et non, si la commande de gauche a terminée, c'est trop tard... et pire,
sinon ça liste tous les processus dont le stdout est notre stdin, et donc pas mal de choses si stdin est un terminal et pas un tube.
Une Bévue
Le 04/07/12 14:08, YBM a écrit :
| grep -F pipe |
OK, merci, mon grep ne doit pas être le même : $ sleep 10 | ./getleft.sh Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information.
$ grep --version grep (GNU grep) 2.5.1
Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Le 04/07/12 14:08, YBM a écrit :
| grep -F pipe |
OK, merci, mon grep ne doit pas être le même :
$ sleep 10 | ./getleft.sh
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
$ grep --version
grep (GNU grep) 2.5.1
Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
OK, merci, mon grep ne doit pas être le même : $ sleep 10 | ./getleft.sh Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information.
$ grep --version grep (GNU grep) 2.5.1
Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
moi-meme
Le Wed, 04 Jul 2012 14:17:37 +0200, Une Bévue a écrit :
OK, merci, mon grep ne doit pas être le même
man grep
Le Wed, 04 Jul 2012 14:17:37 +0200, Une Bévue a écrit :