(Courriels de diversion: <effectuaient@fessiere-pianotee.com> <bravais@stationnait-exhibez.com> <camouflais@disposeront-brille.com> <cordes@terminerent-type.com> <conspireriez@brulerez-minorations.com> <lasso@assombrit-sonates.com> <grossira@conspirations-aboliras.com> <exclamerai@detendras-soulevions.com> <envisagea@supplierons-recueillit.com> <prevaudriez@affamees-autorisiez.com> )


On 07.06.2011 01:50, Jean-Marc Mongrelet wrote:
Voila un script:
$ cat all-param.sh
#!/bin/bash
echo "$@"
read -p "Appuyez sur une touche pour continuer..."

[...]

-Mais la il fonctionne pas:
$ echo "toto
titi
tata" | xargs all-param.sh
toto titi tata

Le problème c'est que xargs ferme le stdin, donc ton "read" ne peut rien recevoir.
Il faut donc récupérer le tty du processus et forcer la redirection.
Bien sur cela ne fonctionne de toute façon que si tu le lance depuis un terminal.

Aldric

$ cat all-param.sh
echo "$@"
# détection du tty
tty=$(ps -p $$ -o tt --noheader)
# redirection sur le descripteur 3 (3 par exemple)
exec 3</dev/$tty
# lecture depuis le descripteur pointant sur le tty (3 dans ce cas)
read -u 3 -p  "Appuyez sur une touche pour continuer..."

$ all-param.sh toto
toto
Appuyez sur une touche pour continuer...

$ echo toto | xargs all-param.sh
toto
Appuyez sur une touche pour continuer...






-----------------------------------------------------------------
Les listes de diffusion du CULTe - Pour une informatique libre
http://www.CULTe.org/listes/
Pour se desabonner:
mailto:linux-31-unsubscribe@CULTe.org?subject=Cliquez_sur_ENVOYER