Récupérer l'entré standard [Résolu]

Récupérer l'entré standard [Résolu] - Shell/Batch - Programmation

Marsh Posté le 21-03-2005 à 21:38:28    

Bonjour,
Je débute en shell et je voudrais savoir comment récupérer l'entré standard d'un script.
Admettons que j'ai un script : text.sh
je le lance :
echo toto | ./text.sh
 
Comment puis je acceder à l'entré standard en l'occurence toto ?
J'arrive avec read a recuperer le texte quand il s'agit d'une seule ligne mais si je fais :  
man man | ./text.sh
 
La ça ne marche plus...
Y a t'il une commande pour vraiment récupérer toute l'entré ?
Merci d'avance


Message édité par Rainbow_Efreet le 22-03-2005 à 18:05:49
Reply

Marsh Posté le 21-03-2005 à 21:38:28   

Reply

Marsh Posté le 22-03-2005 à 04:31:20    

!/bin/sh
 
while read line
do
        echo '*** ' $line
done

Reply

Marsh Posté le 22-03-2005 à 17:50:18    

Merci j'ai trouvé, en fait la méthode du read ne marche pas avec une entré de type < /etc/passwd | ./text.sh
 
il suffit de faire dans le script en premier lieu :
 
mon_entre=`cat`
echo "$mon_entre"
 
et la c'est bon
Merci à tous ;)

Reply

Marsh Posté le 22-03-2005 à 20:21:50    

:heink:
 
C'est "./text.sh < /etc/passwd" que tu voulais faire ?

Reply

Marsh Posté le 22-03-2005 à 20:45:16    

non c'est pas en argument mais en entrée standard

Reply

Marsh Posté le 22-03-2005 à 21:03:47    

Oui, c'est bien ce que fait "./text.sh < /etc/passwd" : le contenu de /etc/passwd est passe sur l'entree standard de ./text.sh. Tu m'a l'air de nager un peu dans les redirections.

Reply

Marsh Posté le 22-03-2005 à 23:02:35    

Et qu'est ce qui ne va pas dans ça :
 
< /etc/passwd | ./text.sh
 
Sinon oui je débute en script shell

Reply

Marsh Posté le 23-03-2005 à 01:41:27    

1) Un "<" comme ça en début de ligne, ce n'est pas standard. En tout cas pas POSIX. ash par exemple ne comprend pas ça.
 
2) Tu fait un pipe alors que c'est inutile. Bref c'est moins économique que "./text.sh < /etc/passwd".

Reply

Marsh Posté le 23-03-2005 à 09:10:39    

oki merci des conseils ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed