Export d'une variable d'environnement

toto_au_bresil -  
zipe31 Messages postés 38797 Statut Contributeur -
Bonjour à tous,

J'ai régulièrement à changer la variable d'environnement CLIENT_LOCALE la tache est pénible à faire sur tout que je la bascule uniquement d'une valeur à une autre (toujours les mêmes) J'ai écrit le script suivant, il m'affiche en_US.819 lorsque je suis en en_US.1252 mais si je fais un echo sur la variable après l'exécution du script il m'affiche en_US.1252.

Je suppose qu'il y a une histoire de portée là dessous. Mais si vous avez une idée pour que la portée soit extérieure à mon script merci beaucoup...

if CLIENT_LOCALE="en_US.1252";
then
export CLIENT_LOCALE="en_US.819";
echo $CLIENT_LOCALE;
else
export CLIENT_LOCALE="en_US.1252";
echo $CLIENT_LOCALE;
fi

2 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Salut,

if CLIENT_LOCALE="en_US.1252";

Déjà, cette syntaxe ne veut rien dire et n'est pas prête d'aboutir ;-\

if [ "${CLIENT_LOCALE}" = "en_US.1252" ] ; 
serait beaucoup plus adaptée.
0
toto_au_bresil
 
Bonjour et merci,

J'ai fait la modification, mais d'une part pour ma culture perso il avait l'air de comprendre l'ancienne syntaxe étant donné qu'à l'exécution il m'affichait bien en_US.819 à la commande echo $CLIENT_LOCALE ?

Et d'autre part j'en suis toujours au même point ça ne fonctionne pas...
Voici le script modifié :

if [ "${CLIENT_LOCALE}" = "en_US.1252" ] ;
then
export CLIENT_LOCALE="en_US.819";
echo $CLIENT_LOCALE;
else
export CLIENT_LOCALE="en_US.1252";
echo $CLIENT_LOCALE;
fi

Merci du temps pris.
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
En fait avec l'ancienne syntaxe, il initialisait la variable, et comme le code retour était bon, appliquait la commande contenue dans le
then
sans jamais passer par le
else
.

Sur quel système es-tu et quel shell ?
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Euh... autre chose...

Comment exécutes-tu ton script ?
Parce qu'il faut le
sourcer
pour que les variables soient prises en compte dans l'environnement ;-\

source ./ton_script.sh

ou
. ./ton_script.sh
0
toto_au_bresil
 
Je suis sur un OS AIX. Pour ce qui est du shell je suppose que c'est ce qu'on met en haut du fichier donc :
Pour exécuter mon script j'ai juste créer un fichier dans mon $HOME/bin
j'ai mis les droits 777 dessus et ça roule pour mes autres petites commandes récurrentes.

Ce qui est marrant curieux et qui prouve bien toute mon incompétence dans le domaine c'est que lorsque je le source il s'execute correctement... ( source ./bascliloc traitement OK) (basecliloc traitement KO)
alors que si je le lance uniquement en tapant son nom il ne s'exécute pas correctement.

Alors mon script n'est pas un .sh il n'a pas d'extension... est-ce que ça vient de là ?
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
lorsque je le source il s'execute correctement...
Ben c'est le but et le boulot de la commande
source
. Le fait de l'exécuter tout simplement ne permet pas l'export.

Alors mon script n'est pas un .sh il n'a pas d'extension... est-ce que ça vient de là ?
Non les extensions ne sont là que pour une meilleures lisibilité, rien de plus.
Je faisais référence au shell, parce que le
shell bourne
d'origine (sh) ne peut exporter les variables directement, il faut d'abord les déclarer puis les exporter :
var ="blabla";
export var
0
toto_au_bresil
 
Ok merci,

Est ce que l'idée de créer un autre fichier dans lequel il y aurait la commande source $HOME/bin/bascliloc serait envisageable ?

En fait la réponse est probablement non parce que j'ai fait le test, mais il y a peut-être une astuce que je n'ai pas ?

L'informaticien est un feignant qui essaye toujours de taper le moins de chose possible...
0