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 :

Définition de variable sur la ligne d'appel d'un programme ou d'une fonction.


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut Définition de variable sur la ligne d'appel d'un programme ou d'une fonction.
    Bonjour.

    J'aurai besoin d'un avis éclairé sur le problème suivant.

    J'ai un script dans lequel j'enchaine trois "instructions" :
    - invocation du script configure
    - invocation du programme make
    - invocation d'une fonction locale au script

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/bash
     
    foo()
    {
    echo $CFLAGS
    }
     
    configure CFLAGS="-g"
     
    make CFLAGS="-g"
     
    CFLAGS="-g" foo
    Il semble que configure et make prennent bien en compte la variable CFLAGS et ne la confondent pas avec un paramètre.
    Par contre, il faut impérativement que je définisse ma variable AVANT foo pour qu'elle soit définie.

    Mes questions sont donc :
    - est-ce que make et configure "eval"uent tous les paramètres non reconnus pour que cela fonctionne ?
    - quelle est votre pratique habituelle, définir les variable toujours avant ou quoi ?

    Voila.

    Merci pour votre aide.

    A bientôt.

  2. #2
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Personnellement, je pense que j'essaierais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    foo()
    {
    echo $CFLAGS
    }
     
    export CFLAGS="-g"
     
    configure
     
    make
     
    foo

  3. #3
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Oui je pourrais faire cela, mais au milieu d'un plus long scripts, je souhaitais définir CFLAGS localement pour ces trois appels.

    Du coup avec votre solution, je dois faire un unset après... mouais pourquoi pas ?!

    Merci pour votre suggestion.

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    L'export n'est ici pas permanent, la variable CFLAGS cessera d'exister à la fermeture du shell.

    Cordialement,
    Idriss

  5. #5
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    @valefor: tu enregistres l'ancienne valeur avec de refaire un export
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    OLDCFLAGS=$CFLAGS
    export CFLAGS="nouvellevaleur"
    ... les traitements ...
    export CFLAGS=$OLDCFLAGS

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Pourquoi exporter cette variable ?
    L'export ne se justifie que 1) si le script fait appel a un autre script ET 2) si on a besoin que l'autre script connaisse ladite variable.
    Là, tout se passe dans le même shell...

    Déjà à la base je ne comprends pas le problème initial. Moi j'ai tapé ça vite fait
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
     
    fct()
    {
            echo $var
    }
     
    var=toto
    fct

    Et j'ai bien ma variable "var" connue de la fonction fct. Donc en fait je ne pige pas où il y a problème avec CFLAGS...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/11/2008, 10h36
  2. [DOM] Déclarer une variable sur plusieurs lignes
    Par fgallnii dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 28/10/2008, 15h32
  3. passage de variable sur plusieurs lignes
    Par kaking dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/06/2008, 09h00
  4. define d'une variable sur plusieurs lignes
    Par crazykangourou dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 13/06/2008, 14h38
  5. Variable sur plusieurs ligne
    Par krfa1 dans le forum ASP
    Réponses: 5
    Dernier message: 20/04/2006, 10h26

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