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

Unix Discussion :

Récupérer la valeur d'une variable valorisée d'une fonction au niveau du shell global


Sujet :

Unix

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut Récupérer la valeur d'une variable valorisée d'une fonction au niveau du shell global
    Bonjour,

    J'ai le shell suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #!/bin/ksh
    #
     
    test="Y"
     
    reaffect () {
            test="N"
            echo "test dans la fonction= $test"
    }
     
    echo "test avant la fonction= $test"
     
    (echo "yo" || { reaffect && exit; } && reaffect) &
     
    echo "test apres la fonction= $test"
     
     
    exit
    Quand j'exécute ce shell j'ai le résultat suivant :
    test avant la fonction= Y
    yo
    test dans la fonction= N
    test apres la fonction= Y
    Cela signifie que mon process global ne reconnait pas la variable redéfinie dans la fonction quand je l'appelle de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (echo "yo" || { reaffect && exit; } && reaffect) &
    Et bien sûr, si je l'appelle de la manière suivante :
    Alors j'obtiens le bon résultat, à savoir la valeur "N" en fin de shell :

    test avant la fonction= Y
    yo
    test dans la fonction= N
    test apres la fonction= N
    Pouvez-vous m'aider svp ?

    Il faut absolument que je garde la manière d'appeler la fonction comme je l'ai écrite dans le code du shell.

    Merci de votre aide,

    Cat

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut
    si j'enlève les parenthèses et le "&" lors de l'appel de ma fonction suite à l'exécution de la commande echo alors ça fonctionne MAIS il faut absolument que je lance cette commande "en parallèle" dans ce même shell (ce qui explique l'utilisation du "&") et il faut également que j'exécute la fonction si la commande s'est bien/mal exécutée

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut
    le code sera plus tard inclus dans une boucle qui lancera la commande echo (et donc appellera la fonction) 10 fois d'affilée.

    Pour simplifier, je n'ai mis qu'une partie du code

    Merci à tous

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut
    Finalement j'ai décidé d'écrire ma variable dans un fichier au niveau de la fonction et ensuite d'extraire cette variable du fichier au niveau du process global

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2014, 20h43
  2. Réponses: 7
    Dernier message: 10/01/2013, 16h39
  3. Réponses: 1
    Dernier message: 23/05/2012, 22h41
  4. Récupérer la valeur d'un tag jsp dans une variable Java
    Par Nitroman_70 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 05/08/2010, 09h33
  5. Récupérer la valeur d'un champ XML dans une variable
    Par adrien357 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 24/02/2010, 11h05

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