|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 132 ![]() |
Bonjour,
dans un teminal je tape: puis: 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. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
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 ! |
|
|
20
|
|
|
#3 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 132 ![]() |
Les environnements, les shells et les sous-shells etc .. c'est plutôt piégeant si on ne fait pas attention.
Merci |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Sans compter que echo est généralement un built-in, qui ne demande donc pas l'invocation d'une commande externe.
|
|
|
00
|
|
|
#5 | |||
|
Membre régulier
![]() Inscription : février 2007 Messages : 132 ![]() |
Citation:
Par contre avec Code :
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 ? |
|||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
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". |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com