IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Affectation d'une variable depuis l'extérieur du script


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Affectation d'une variable depuis l'extérieur du script
    Bonjour tout le monde,

    Je viens sur ce forum pour vous demander un petit peu d'aide. Comment puis-je modifier la valeur d'une variable d'un script en cours d'exécution depuis l'extérieur ?
    J'ai quelques idées mais rien de très clair dans ma petite tête :
    - exécuter le même script en ayant le même pid (mais de quelle façon?) en passant la nouvelle valeur à affecter en argument $1
    - depuis un autre script, ouvrir celui dont on veut modifier la variable en écriture puis faire les modifications peut-être avec la commande sed ?

    merci

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    tu ne peux pas sauf que ...

    tu ne peux pas parce que la variable provient du script et donc du shell lancé par le script (1ere ligne) donc de SON environnement..

    le cas le plus simple
    c'est un script lancé plusieurs fois,
    il suffit alors avec sed ou autre dans un autre script de modifier la variable et hop à l'itération suivante la modif est prise en compte....

    C'est un peu nul comme méthode mais ça peut marcher...


    =======================

    L'autre solution c'est d'utiliser une variable d'environnement et non pas du shell script...

    comme ça tu la modifies dans n'importe quel terminal et hop à l'itération suivante d'un script qui l'utilise ça prend la nouvelle valeur.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci tout d'abord pour ton aide frp31!
    La solution qui consiste à utiliser une variable d'environnement m'intéresse, j'y avais pensé également. Ca m'a l'air beaucoup plus simple de cette façon. Dans ce cas faudrait il créer une variable d'environnement ou peut-être en utilisant un "export" ?
    J'ai oublié de préciser que niveau programmation Shell Bash je suis très débutant .

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Y'a aucune honte a poser des question et à débuter, au contraire mieux vaut demander plutot que de tenter de se demerder seul et de prendre de mauvaises habitudes.

    Quand j'ai débuté j'ai trouvé de l'aide... alors à mon tour de partager ce que je sais.

    oui tout à fait
    tu fais un export dans le fichier ~/.profile par exemple ou ~/.basrc

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export CURDATE=$(date +%Y%m%d)
    cette variable d'environnement reste donc utilisable/appelable dans les scripts lancé par cet utilisateur. (si c'est dans /home/toto/.basrc c'est valable pour les appels par les scripts dont le proprietaire est toto)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    J'ai bien ajouter dans le fichier ~/.bashrc "export var=toto" et quand dans mon script je fais "echo $var" il ne m'affiche rien. Je ne sais pas où est le problème. Dois je relancer un service ?

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 439
    Points
    19 439
    Par défaut
    Bonjour,

    que vaut $SHELL ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par johannis Voir le message
    J'ai bien ajouter dans le fichier ~/.bashrc "export var=toto" et quand dans mon script je fais "echo $var" il ne m'affiche rien. Je ne sais pas où est le problème. Dois je relancer un service ?
    selon le shell c'est peut etre pas export var=.... mais juste var=.... ou setenv var ....

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Citation Envoyé par johannis Voir le message
    J'ai bien ajouter dans le fichier ~/.bashrc "export var=toto" et quand dans mon script je fais "echo $var" il ne m'affiche rien. Je ne sais pas où est le problème. Dois je relancer un service ?
    As-tu entre-temps ouvert un nouveau shell ou à la limite as-tu sourcé ton ~/.bashrc avant de lancer ton script ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 439
    Points
    19 439
    Par défaut
    Citation Envoyé par frp31
    selon le shell c'est peut etre pas export var=.... mais juste var=.... ou setenv var ....
    par conséquent, pas forcément dans ~/.bashrc, mais dans le fichier d'initialisation du $SHELL.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    par conséquent, pas forcément dans ~/.bashrc, mais dans le fichier d'initialisation du $SHELL.
    tout à fait.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/10/2009, 10h52
  2. Affectation d'une variable dans un état
    Par tamerlan dans le forum Access
    Réponses: 26
    Dernier message: 04/04/2006, 09h09
  3. [DEBOGUEUR] tracer l'affectation d'une variable
    Par mimil dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 15/03/2006, 17h08
  4. Réponses: 5
    Dernier message: 08/09/2005, 20h33
  5. VB Word : appel d'une macro depuis l'extérieur
    Par pezz dans le forum VBA Word
    Réponses: 2
    Dernier message: 24/02/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo