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 :

affecter une valeur à une variable


Sujet :

Shell et commandes GNU

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut affecter une valeur à une variable
    Bonjour,
    dans un teminal je tape:
    puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var1=60 echo $var1
    Je m'attendais à avoir une erreur car je n'ai pas mis ; après 60 mais pas d'erreur renvoyée
    et d'autre part var1 contient toujours 45.
    Si je mets ; après 60 alors la variable var1 contient bien 60 cette fois.

    Quelqu'un peut-il m'expliquer ...
    Merci d'avance.

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

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

    var1 sans point-virgule devient une variable d'environnement pour la commande echo,
    mais, le développement de $var1 est effectué avant toute autre chose dans ce code (cf. man bash /DÉVELOPPEMENTS),
    donc, var1 vaut 60 pour echo, mais étant donné qu'il doit afficher 45 (parce que $var1 est déjà substitué), il le fait !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Les environnements, les shells et les sous-shells etc .. c'est plutôt piégeant si on ne fait pas attention.
    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Sans compter que echo est généralement un built-in, qui ne demande donc pas l'invocation d'une commande externe.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Citation Envoyé par matafan Voir le message
    Sans compter que echo est généralement un built-in, qui ne demande donc pas l'invocation d'une commande externe.
    Ben je ne vois pas la différence à l'usage (à part la rapidité) entre echo (built-in) et /bin/echo
    Par contre avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat Src1  echo X is $X
    X=34 ./Src1 
    X is 34
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    X=34 echo X is $X
    X is
    Si j'ai bien compris dans le premier cas X est dans l'environnement de Src1 et dans le deuxième cas X n'est pas dans l'environnement de echo mais echo est dans quoi ? c'est des histoires de shell et sous shell ?

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Dans le deuxième cas le problème a été déjà expliqué par N_BaH : $X est expansé par le shell avant même qu'il ne fasse X=34.

    Il faut bien réaliser que quand tu fais :
    alors $VAR est expansé par le shell avant d'exécuter "command". Donc "command" s'exécute bien avec VAR=val dans son environnement, mais elle voit "val" en argument, pas "$VAR".

Discussions similaires

  1. affecter plusieurs valeurs à une variable
    Par khamett dans le forum VBScript
    Réponses: 2
    Dernier message: 19/06/2013, 11h14
  2. Affecter une valeur à une variable avec requête SQL
    Par xeron33 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 26/02/2013, 00h57
  3. Réponses: 2
    Dernier message: 06/09/2010, 16h05
  4. Réponses: 3
    Dernier message: 14/05/2009, 17h53
  5. affecter une valeur à une Variable public
    Par mnssylvain dans le forum VBA Access
    Réponses: 10
    Dernier message: 28/01/2007, 12h39

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