Les accolades

Résolu
Loik -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
    1. Loik
       
      Oulah attends deux secondes comment ça se fait que x soit égale à la fois à "coucou" et ${x}y dans ton cas ?
      0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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