Les accolades

Résolu/Fermé
Loik - 30 janv. 2013 à 20:15
mamiemando Messages postés 33284 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 septembre 2024 - 30 janv. 2013 à 22:46
Bonsoir,

J'aimerais savoir ce que fait la ligne suivante :

$ x=${x}y; echo $x

J'hésite entre une boucle infinie et l'affichage de ${x}y

Merci !

2 réponses

mamiemando Messages postés 33284 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 septembre 2024 7 787
30 janv. 2013 à 20:21
Pour quoi tu n'écris pas simplement le programme shell correspondant et ensuite tu le lances ?

(mando@silk) (~) $ cat plop.sh 
x="coucou"
x=${x}y
echo $x

(mando@silk) (~) $ sh plop.sh 
coucouy


Personnellement j'aurais plutôt écrit

x="${x}y"


Les accolades limitent la portée de l'opérateur $ à la lettre x (au lieu xy). Ainsi écrire $xy est équivalent à écrire ${xy}.

Bonne chance
0
Oulah attends deux secondes comment ça se fait que x soit égale à la fois à "coucou" et ${x}y dans ton cas ?
0
mamiemando Messages postés 33284 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 septembre 2024 7 787
30 janv. 2013 à 22:46
La commande cat écrit le contenu d'un fichier (ici plop.sh, que j'ai écrit au préalable)
Dans mon fichier plop.sh il y a trois instructions.
- La première initialise x à coucou.
- La seconde modifie x comme tu l'as écris dans ta commande.
- La troisième écrit x
Ensuite j'exécute ce script et observe le résultat des trois commandes.

Si je n'avais pas initalisé x à "coucou", cette variable aurait été implicitement initialisée à "" et j'aurais observé comme résultat "y" au lieu de "coucouy".

Bonne chance
0