Rechercher : dans
Par :

Script Unix

Dernière réponse le 9 fév 2007 à 16:14:50 Landrain m, le 8 fév 2007 à 18:22:49 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Script Unix » dans :
Code pour télécommande universelle VoirTélécommande universelle Philips Télécommande universelle Thomson ROC Télécommande universelle One for all Télécommande universelle Star Choice Télécommande universelle Marmitek Télécommande universelle Lifetec LT Télécommande universelle...
Unidialog - Accès impossible VoirLe Service Unidialog des Assedic permet à tout moment, partout en France, d'effectuer le traitement immédiat de votre dossier : déclaration de situation mensuelle consultation de votre dossier obtention d'une attestation changement de...
[IE] Erreur de script / Effectuer un débogage VoirDe temps en temps, lorsque vous naviguez sur le Net et que vous chargez une page Web, un message d'erreur de script survient : Une erreur est survenue. Une erreur est survenue sur le script de cette page. Souhaitez-vous effectuer un débogage...
Télécharger Revo Uninstaller VoirRevo Uninstaller est un logiciel édité par VS Revo Group permettant de faire un nettoyage en profondeur avec diverses fonctionnalités : Nettoyage, désinstallation de programmes avec suppression des clefs de registres périmées. Un mode Chasseur...
Variables d'environnement VoirVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...
Le bus USB (Universal Serial Bus) VoirPrésentation du bus USB Le bus USB (Universal Serial Bus, en français Bus série universel) est, comme son nom l'indique, basé sur une architecture de type série. Il s'agit toutefois d'une interface entrée-sortie beaucoup plus rapide que les ports...
UNIX - Les fichiers VoirIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...

1

jipicy, le 8 fév 2007 à 19:12:14

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
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

dubcek, le 9 fév 2007 à 16:03:35

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.

Répondre à dubcek

3

 jipicy, le 9 fév 2007 à 16:14:50

Merci de préciser, j'avais z'oublié ;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy