Posez votre question Signaler

Script Unix

Landrain m - Dernière réponse le 9 févr. 2007 à 16:14
Bonjour,
Je rencontre un souci dans le script unix que j'ai écrit.
Dans une boucle de lecture d'un fichier, j'incrémente une variable selon certaines conditions durant le traitement de la boucle. Je fais afficher également le conenu de la variable pour la mise au point. La variable affichée contient la valeur attendue.
Lorsque la boucle se termine, je fais également afficher la variable, et là, surprise, la variable est à zéro.
Je ne comprends pas.
Ci-dessous, un exemple du script.
export CRET=0
cat $VINF | while read T_Rec T_Fld1 T_Fld2
do
echo "$T_Rec|$T_Fld1"
if [ $T_Rec = "A" ]
then
# traitement a realiser.
# ....
((CRET+=1))
echo "CRET : $CRET">>$LOG
elif [ $T_Rec = "B" ]
then
# traitement a realiser.
# ....
((CRET+=1))
echo "CRET : $CRET">>$LOG
elif [ $T_Rec = "C" ]
then
# traitement a realiser.
# ....
((CRET+=1))
echo "CRET : $CRET">>$LOG
fi
echo "ETAT1 CRET : $CRET">>$LOG
done
echo "ETAT2 CRET : $CRET">>$LOG
Lire la suite 

Script Unix »

3 réponses
Réponse
+0
moins plus
Salut,

Essaie comme ça :
export CRET=0

cat $VINF | 
(
while read T_Rec T_Fld1 T_Fld2
do
...

...
fi

echo "ETAT1 CRET : $CRET">>$LOG

done

echo "ETAT2 CRET : $CRET">>$LOG
)


Ou encore comme ça :
while read T_Rec T_Fld1 T_Fld2
do
...

...
fi

echo "ETAT1 CRET : $CRET">>$LOG

done < $(eval echo $VINF)

echo "ETAT2 CRET : $CRET">>$LOG
;-))
Ajouter un commentaire
Réponse
+0
moins plus
Parce que la boucle
cat $VINF | while read T_Rec T_Fld1 T_Fld2
done
crée un sous shell et que les variables de ce sous shell ne sont jamais passées au shell appellant.
jipicy - 9 févr. 2007 à 16:14
Merci de préciser, j'avais z'oublié ;-))
Ajouter un commentaire
Ce document intitulé « Script Unix » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook