Bases de Linux et de la ligne de commande

$ name=world
$ echo 'Hello $name'
$ echo "Hello $name"

Si l'on exécute dans l'ordre les commandes ci-dessus, quelle est la sortie des deux commandes echo ?

  1. ALa première est Hello world, et la deuxième Hello $name
  2. BLa première et la deuxième sont toutes deux Hello world
  3. CLa première est Hello $name, et la deuxième Hello world
Afficher la réponse et l'explication

Réponse : C. La première est Hello $name, et la deuxième Hello world

Dans le shell, une partie placée entre guillemets simples ('…') est prise telle qu'elle est écrite, et les variables comme $name ne sont pas développées. Entre guillemets doubles ("…"), les variables sont développées : la deuxième sortie est donc Hello world. Les guillemets doubles servent aussi à faire de la valeur d'une variable un seul argument, même si elle contient des espaces. Dans l'affectation « name=world », on ne peut d'ailleurs pas mettre d'espace autour du =.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de Linux et de la ligne de commande

  1. Comme ci-dessus, on exécute le script s.sh avec des arguments. Quelle est la sortie ?
  2. Dans un script shell, dans quel cas la condition du if ci-dessus est-elle vraie ?
  3. Quels fichiers se trouvent dans le répertoire après la session ci-dessus ?
  4. Le script exécutable run.sh, situé dans le répertoire courant, donne « command not found » quand on le lance en tapant « run.sh », mais s'exécute quand on tape « ./run.sh ». Quelle en est la raison ?
  5. Si l'on exécute dans l'ordre les commandes ci-dessus, quelle est la combinaison des sorties des deux commandes bash -c ?