Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/02/2011, 22h26   #1
Membre régulier
 
Inscription : février 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 132
Points : 94
Points : 94
Par défaut affecter une valeur à une variable

Bonjour,
dans un teminal je tape:
puis:
Code :
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.
rutabagas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 22h41   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
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_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/02/2011, 16h53   #3
Membre régulier
 
Inscription : février 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 132
Points : 94
Points : 94
Les environnements, les shells et les sous-shells etc .. c'est plutôt piégeant si on ne fait pas attention.
Merci
rutabagas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h44   #4
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

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

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Sans compter que echo est généralement un built-in, qui ne demande donc pas l'invocation d'une commande externe.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 23h35   #5
Membre régulier
 
Inscription : février 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 132
Points : 94
Points : 94
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 :
1
2
3
cat Src1  echo X is $X
X=34 ./Src1 
X is 34
mais
Code :
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 ?
rutabagas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 09h49   #6
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

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

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
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".
matafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h30.


 
 
 
 
Partenaires

Hébergement Web