Restauration redirection stdin - Shell/Batch - Programmation
Marsh Posté le 17-01-2005 à 15:45:18
A mon avis il quitte sur le exit $FIN... En général un read ça ce fait avec un while (read) do ... done.
Marsh Posté le 17-01-2005 à 15:55:23
pour restaurer stdin, il faut faire un exec sans argument ,de mémoire.
Marsh Posté le 17-01-2005 à 20:57:30
Bien sur !! il quitte sur $FIN ! J'ai tellement planché la dessus et sur la doc de exec... que j'ai pas vu cette voie la... Merci matafan ! Par contre, comment tu gères la boucle ? quand je fais un while (read), il n'y a qu'un passage de boucle, alors que le fichier avec lequel je teste ca comporte 3 lignes.
Marsh Posté le 17-01-2005 à 20:58:28
Zaib3k, je crois pas avoir bien compris ce que tu voulais me dire. Je dois lancerl a commande "exec" tout simplement, sans arguments ? ce que j'ai fais n'est pas bon ?
Marsh Posté le 17-01-2005 à 21:00:20
le3zi a écrit : Zaib3k, je crois pas avoir bien compris ce que tu voulais me dire. Je dois lancerl a commande "exec" tout simplement, sans arguments ? ce que j'ai fais n'est pas bon ? |
je repondais juste au titre du topic.
sinon pour la boucle,
while read ligne; do |
ca devrait t'aider
Marsh Posté le 17-01-2005 à 21:01:02
On peut dire que c'est une réponse rapide, je vais tester ca ... merci
Marsh Posté le 17-01-2005 à 21:02:45
ca a l'air de bien marcher... cela dit.. comment donner un descripteur a mon fichier... la j'utilise 6 dans l'exemple (ca été repris d'un site) mais je ne vois pas trop a quoi ca correspond...
Marsh Posté le 17-01-2005 à 21:07:04
si tu n'as pas besoin d'un descripteur precis, garde celui par defaut
Marsh Posté le 17-01-2005 à 21:11:26
ha non les descripteurs standard sont 0 1 et 2
stdin 0
stdout 1
stderr 2
Marsh Posté le 18-01-2005 à 01:19:06
Oui.. ceux la je sais mais est ce que par exemple :
- Enregistrement de stdin et redirection vers mon fichier:
exec 6<&0
exec < $fichier
- Traitement avec des read dans le fichier
- Restauration de stdin
exec 0<&6 6<&-
Est ce que ceci est correct ?
Marsh Posté le 17-01-2005 à 02:19:38
Bonjour, j'utilise la commande exec en bash pour lire dans un fichier... je joins un extrait de mon code ou je traite les lignes du fichiers une par une dans la boucle while (true).
Le problème est que le programme semble quitter a l'instruction done et donc les traitements ultérieurs (ici l'écriture a l'écran) ne sont pas traités......
#!/bin/bash
fichier=$1
exec 6<&0
exec < ./asi05.txt
while (true)
do
read ligne
if [ "$ligne" = "" ] ; then
exit $FIN
fi
echo "in"
done;
echo "out"
exec 0<&6 6<&-
exit 50
Pouvez vous m'éclairer a ce sujet la ?? merci
Message édité par le3zi le 17-01-2005 à 20:58:46