Les accolades

Résolu
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. Modérateur
    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
    1. Modérateur
      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
      1. Oulah attends deux secondes comment ça se fait que x soit égale à la fois à "coucou" et ${x}y dans ton cas ?