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 :

[Variable] Visibilité globale


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Par défaut [Variable] Visibilité globale
    Bonjour,

    Comment rendre une variable présente dans une FONCTION visible en dehors de celle-ci ?
    Notamment dans une structure de contrôle CASE.

    J'espère avoir été clair dans mon explication.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Ce qui est déstabilisant avec bash, c'est que les variables ne sont pas locales à la fonction par défaut. Il faut utiliser le mot "local" en plus pour qu'elle deviennent locales.
    Donc les variables dans une fonction sont déjà globales!

    La question est donc "Qu'est-ce qui te fait penser que la variable n'est pas globale ?"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Ce qui est déstabilisant avec bash, c'est que les variables ne sont pas locales à la fonction par défaut. Il faut utiliser le mot "local" en plus pour qu'elle deviennent locales.
    Donc les variables dans une fonction sont déjà globales!

    La question est donc "Qu'est-ce qui te fait penser que la variable n'est pas globale ?"
    Car elle n'est pas reconnue ci-après avec ou sans accolade

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    case $# in
            0)      echo -e "# Alimenter les variables ci-dessous \n# contexte instance heure_debut heure_fin type_log date " >${contexte}/diff/tmp/log/list_file

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Bonjour,

    avec tout le script, ou juste la partie où cette variable est déclarée/assignée, ce serait plus évident, que de montrer là où elle est utilisée/invisible !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function F1
    {
            # Declaration des variables
            contexte=$(echo $1 |tr [:lower:] [:upper:])
            instance=$(echo $2 |tr [:lower:] [:upper:])
           date_du_jour=$(echo $(date '+%Y/%m/%d') | sed 's/\//-/g') # Date du jour au format AAAA-MM-JJ

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    $# désigne le nombre d'arguments ? Si c'est 0, alors tu indiques les arguments qui doivent être présents ? Et tu les renvoies dans un fichier au chemin variable ?

    Sauf que le chemin dépend du premier argument, et le premier argument est vide puisque il y en a 0. Donc le "contexte" n'est pas un mot en majuscule.

    Ai-je bien compris ?
    Sinon, je soutiens la demande d'informations complémentaires de N_BaH.

Discussions similaires

  1. Variables super-global ?
    Par meliandah dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2007, 16h14
  2. Variable environnement / globale
    Par crochepatte dans le forum Langage
    Réponses: 14
    Dernier message: 18/09/2006, 09h55
  3. Variable super globale au projet
    Par florent149 dans le forum Général VBA
    Réponses: 35
    Dernier message: 11/07/2006, 10h52
  4. Réponses: 4
    Dernier message: 20/06/2005, 15h04
  5. [.NET] [C#] Variable super global ?
    Par choas dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/04/2005, 15h27

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