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

トップ ページ

このメッセージに返信
著者: Yves Martin
日付:  
To: guilde
題目: 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