Avant de commencer à parler de
variables, il y a une commande que j'aimerais vous présenter :
echo. J'aurais pu en parler avant que l'on commence à faire des scripts bash, mais vous n'en auriez pas vu l'utilité avant d’aborder ce chapitre.
Son principe est très simple : elle affiche dans la console le message demandé. Un exemple :
Code : Console | $ echo Salut tout le monde
Salut tout le monde |
Comme vous le voyez, c'est simple comme bonjour. Les guillemets ne sont pas requis.
Mais… comment est-ce que cela fonctionne ?
En fait, la commande
echo affiche dans la console tous les paramètres qu'elle reçoit. Ici, nous avons envoyé quatre paramètres :
- Salut ;
- tout ;
- le ;
- monde.
Chacun des mots était considéré comme un paramètre que
echo a affiché. Si vous mettez des guillemets autour de votre message, celui-ci sera considéré comme étant un seul et même paramètre (le résultat sera visuellement le même) :
Code : Console | $ echo "Salut tout le monde"
Salut tout le monde |
Si vous voulez insérer des retours à la ligne, il faudra activer le paramètre
-e et utiliser le symbole
\n :
Code : Console | $ echo -e "Message\nAutre ligne"
Message
Autre ligne |
Afficher une variable
Pour afficher une variable, nous allons de nouveau utiliser son nom précédé du symbole dollar
$ :
Code : Console | #!/bin/bash
message='Bonjour tout le monde'
echo $message |
Comparez les lignes 3 et 4 : lorsque l'on déclare la variable à la ligne 3, on ne doit pas mettre de $ devant. En revanche, lorsqu'on l'affiche à la ligne 4, on doit cette fois mettre un $ !
Résultat :
Code : Console
Maintenant, supposons que l'on veuille afficher à la fois du texte et la variable. Nous serions tentés d'écrire :
Code : Console | #!/bin/bash
message='Bonjour tout le monde'
echo 'Le message est : $message' |
Le problème est que cela ne fonctionne pas comme on le souhaite car cela affiche :
Code : Console | Le message est : $message |
Pour bien comprendre ce qui se passe, intéressons-nous au fonctionnement de ce que l'on appelle les « quotes ».
Les quotes
Il est possible d'utiliser des
quotes pour délimiter un paramètre contenant des espaces. Il existe trois types de quotes :
- les apostrophes ' ' (simples quotes) ;
- les guillemets " " (doubles quotes) ;
- les accents graves ` ` (back quotes), qui s'insèrent avec Alt Gr + 7 sur un clavier AZERTY français.
Selon le type de quotes que vous utilisez, la réaction de bash ne sera pas la même.
Les simples quotes ' '
Commençons par les simples quotes :
Code : Console | message='Bonjour tout le monde'
echo 'Le message est : $message' |
Code : Console | Le message est : $message |
Avec de simples quotes, la variable n'est pas analysée et le
$ est affiché tel quel.
Les doubles quotes " "
Avec des doubles quotes :
Code : Console | message='Bonjour tout le monde'
echo "Le message est : $message" |
Code : Console | Le message est : Bonjour tout le monde |
… ça fonctionne ! Cette fois, la variable est analysée et son contenu affiché.
En fait, les doubles quotes demandent à bash d'analyser le contenu du message. S'il trouve des symboles spéciaux (comme des variables), il les interprète.
Avec de simples quotes, le contenu était affiché tel quel.
Les back quotes ` `
Un peu particulières, les back quotes demandent à bash d'
exécuter ce qui se trouve à l'intérieur.
Un exemple valant mieux qu'un long discours,
regardez la première ligne :
Code : Console | message=`pwd`
echo "Vous êtes dans le dossier $message" |
Code : Console | Vous êtes dans le dossier /home/mateo21/bin |
La commande
pwd a été exécutée et son contenu inséré dans la variable
message ! Nous avons ensuite affiché le contenu de la variable.
Cela peut paraître un peu tordu, mais c'est réellement utile. Nous nous en resservirons dans les chapitres suivants.