Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Ajouter une variable d'environnement dans un script
Envoyé par: cedric b

Bonjour,
Et bien voila, a ma grande surprise, on ne peut a priori pas ajouter une nouvelle variable d'environnement dans un script shell executable.

Voici ce que j'entends par la:
Contenu de scipt.sh:
#! /bin/sh
# code...
export MA_VAR=$1


Appel de script.sh
$./script.sh donnees
$echo ma_var=$MA_VAR
ma_var=


donc MA_VAR n'existe pas alors que je l'ai cree!

voila, en fait j'ai besoin d'un "truc" qui prenne en parametre une donnee, qui sera incluse dans une variable d'environnement et qui permette aussi d effectuer des calculs.

garg... pas facile a expliquer

mais si vous voyez ce que je veux dire, pourriez vous m'aider svp. ca doit pas etre bien complique je suppose

Poste le Thursday 17 March 2005 07:29:36
Répondre     Citer    
Re: Ajouter une variable d'environnement dans un script
Envoyé par: ceric35

Appel de script.sh
$./script.sh donnees
$echo $MA_VAR

tout simplement

$echo ma_var=$MA_VAR n'a pas de sens je pense !

-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Thursday 17 March 2005 09:15:17
Répondre     Citer    
Re: Ajouter une variable d’environnement dans un script
Envoyé par: nicola

Citation
cedric b
Voici ce que j'entends par la:
Contenu de scipt.sh:
#! /bin/sh
# code...
export MA_VAR=$1

Jusque là, tout va bien.

Citation

Appel de script.sh
$./script.sh donnees
$echo ma_var=$MA_VAR
ma_var=

Pour afficher MA_VAR, tu tapes echo $MA_VAR.
En fait, on dirait que tu as copié le contenu de MA_VAR dans ma_var (pourquoi pas), si tu veux afficher ma_var=gato (le contenu de MA_VAR avec ma_var= devant), tu places des guillemets doubles autour, comme ça :
echo "ma_var=$MA_VAR"

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Thursday 17 March 2005 13:58:47
Répondre     Citer    
Re: Ajouter une variable d'environnement dans un script
Envoyé par: MDW

Bonjour

Un truc comme ceci fonctionnera:

#! /bin/sh
# code...
echo MA_VAR=$MA_VAR


ensuite


eval `./script.sh donnees`


La deuxieme solution c'est d'utiliser 'include fichier'/'. fichier' (sh) ou 'source' (csh)


Si necessaire, remplacer la derniere ligne du script par:

echo MA_VAR)$MA_VAR \; export MA_VAR


A+

MDW

Poste le Thursday 17 March 2005 21:33:20
Répondre     Citer    
Re: Ajouter une variable d'environnement dans un script
Envoyé par: Sve@r

Citation
cedric b
Bonjour,
Et bien voila, a ma grande surprise, on ne peut a
priori pas ajouter une nouvelle variable
d'environnement dans un script shell executable.

Voici ce que j'entends par la:
Contenu de scipt.sh:
#! /bin/sh
# code...
export MA_VAR=$1

Appel de script.sh
$./script.sh donnees
$echo ma_var=$MA_VAR
ma_var=

Si je lis bien cet exemple, tu as un script qui vrée une variable "MA_VAR".
Ensuite, tu lances le script
Enfin tui affiche le contenu de "MA_VAR" et, ô surprise, MA_VAR est vide !
Eh ben c'est normal

1) quand tu lances un script, tu ouvres un sous processus (un fils de ton shell courant) et c'est le fils qui va exécuter le script. Ce système permet les pipe et les commandes en arrière plan... mais quand le fils se termine, toutes les variables créées dans le fils sont supprimées

2) la commande "export" permet d'exporter une variable vers un fils. C'est à dire que si tu tapes "export nom=cedric" et que tu lances un script qui fasse "echo $nom" tu auras "cedric" affiché.
Toi, tu cherches à l'exporter vers le père et ça c'est impossible.

Solution pour contourner le problème
1) tu crées un script "script.sh" qui fait plein de choses mais qui ne fasse qu'un seul "echo $MA_VAR". Aucun autre echo ne doit être dans ce script
2) tu appelles ensuite ton script da la façon suivante: MA_VAR=`./script.sh donnees`

Autre solution
Tu laisses ton script tel que tu l'as écrit au début de ce topic mais tu l'appelles de la façon suivante: . ./script donnees
La syntaxe ". pgm" demande au shell de ne pas créer de fils pour exécuter "pgm". L'inconvénient, c'est que si, dans "pgm" tu as un "exit" qui est présent, ben ça te déconnecte

Citation
cedric b
voila, en fait j'ai besoin d'un "truc" qui prenne
en parametre une donnee, qui sera incluse dans une
variable d'environnement et qui permette aussi d
effectuer des calculs.

hum...

Citation
cedric b
garg... pas facile a expliquer
ce qui se conçoit bien ...

Citation
cedric b
mais si vous voyez ce que je veux dire, pourriez
vous m'aider svp. ca doit pas etre bien complique
je suppose

Je vais essayer de traduire ce que j'ai compris...
Tu as besoin d'un script qui fasse un calcul sur une donnée que tu lui passe en paramètre et qui stocke ce calcul dans une variable d'environnement dans ton shell de travail. Si c'est bien ça, alors pas trop de soucis

Contenu du script
#!/bin/sh
...
...
gros calcul
...
echo "$resultat_final"
# Fin du script (aucun autre echo dans le script)

Appel du script
export MA_VAR=`./script.sh donnee`

Et voilà...

Poste le Thursday 17 March 2005 23:26:05
Répondre     Citer    
Re: Ajouter une variable d'environnement dans un script
Envoyé par: cedric b

Merci a tous mais en fait, seul sve@r a compris et tres clairement repondu a ma question.
je connaissais l histoire des pere fils, mais je croyais que justement export permettait d envoyer une variable au pere....
Maintenant je comprends pourquoi on appelle les .bashrc avec la commande .!!! Merci!!! De plus je ne savais pas qu on pouvait y ajouter des parametres!

Je vais preferer l utilisation du . ./script donnees qui me parait plus facile d utilisation (moins long a ecrire pour l utilisateur : le script est destine a des windoziens;-p...)

ok
Merci Sve@r

salut

Poste le Friday 18 March 2005 04:14:59
Répondre     Citer    
Re: Ajouter une variable d'environnement dans un script
Envoyé par: Sve@r

Citation
cedric b
Merci a tous mais en fait, seul sve@r a compris et
tres clairement repondu a ma question.
je connaissais l histoire des pere fils, mais je
croyais que justement export permettait d envoyer
une variable au pere....
Maintenant je comprends pourquoi on appelle les
.bashrc avec la commande .!!! Merci!!! De plus je
ne savais pas qu on pouvait y ajouter des
parametres!

Je vais preferer l utilisation du . ./script
donnees qui me parait plus facile d utilisation
(moins long a ecrire pour l utilisateur : le
script est destine a des windoziens...)

ok
Merci Sve@r

salut

Après avoir perdu le concours "modifier la première ligne d'un fichier" [lea-linux.org], je gagne le concours "Ajouter une variable d'environnement"
Yeah !!! G gagné !!!:-))^^D-*

Poste le Friday 18 March 2005 04:28:54
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Ajouter une variable d'environnement dans un script
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons