Re: Perte de valeur d'une variable dans un script KSH

Top Page

Reply to this message
Author: Yves Martin
Date:  
To: guilde
Subject: Re: Perte de valeur d'une variable dans un script KSH
On Fri, 2012-05-11 at 15:58 +0200, marc.terrier@??? wrote:

> 01    VARIABLE="tata"
> 02    echo "DEBUG1> \${VARIABLE}='${VARIABLE}'"
> 03  
> 04    cat ${REP_SOURCE}/FichierDeConfiguration.txt | while read line ; do
> 05      VARIABLE=$line
> 06      echo "DEBUG2> \${VARIABLE}='${VARIABLE}'"
> 07      if [ $? -ne 0 ] ; then
> 08        msglog $LOG_FILE 3 3001 "*ERREUR* lors de la récupération du contenu de la ligne $line"
> 09        msglog $LOG_FILE 3 3001 "*ERREUR* dans le fichier FichierDeConfiguration.txt"
> 10        f_arretInstall
> 11      fi
> 12    done


> Cela règle le problème, mais ne l'explique pas. Une idée, quelqu'un ?


Bonjour,

Une intuition sans propre de le temps de vérifier: j'imagine qu'un shell
est démarré (ou forké) par le "|" ce qui crée donc un contexte limité
pour cette variable avec un effet de bord sur son existence une fois
sortie de la boucle... (un bug ?)

En bash, je ferai un "set -a" (allexport) et apparemment le man ksh fait
aussi référence à cette option.

La commande "export" pourrait avoir le même effet mais en jouant en plus
sur l'environnement du processus.

En tout cas je suis curieux de connaître le fin mot de ton histoire...

--
Yves Martin