Utiliser des variables dans les scripts bash

Dans la première partie de la série Bash Basics, j’ai brièvement mentionné les variables. Il est temps de les détailler dans ce chapitre.
Si vous avez déjà fait n’importe quel type de codage, vous devez être familier avec le terme « variable ».
Si ce n’est pas le cas, considérez une variable comme une boîte qui contient des informations, et ces informations peuvent être modifiées au fil du temps.
Voyons comment les utiliser.
Contents
Utilisation de variables dans le shell Bash
Ouvrez un terminal et utilisez initialiser une variable avec un nombre aléatoire 4 :
var=4
Alors maintenant, vous avez une variable nommée var
et sa valeur est 4
. Vous voulez le vérifier ? Accéder à la valeur d’une variable en ajoutant $ avant le nom de la variable. C’est ce qu’on appelle l’expansion des paramètres.
[email protected]:~$ echo The value of var is $var
The value of var is 4
🚧
Il ne doit PAS y avoir d’espace avant ou après =
lors de l’initialisation des variables.
Si vous le souhaitez, vous pouvez modifier la valeur en autre chose :

Dans le shell Bash, une variable peut être un nombre, un caractère ou une chaîne (de caractères, espaces compris).

💡
Comme d’autres choses sous Linux, les noms de variables sont également sensibles à la casse. Ils peuvent être composés de lettres, de chiffres et du trait de soulignement “_”.
Utilisation de variables dans les scripts Bash
Avez-vous remarqué que je n’ai pas exécuté de script shell pour afficher les exemples de variables ? Vous pouvez faire beaucoup de choses directement dans le shell. Lorsque vous fermez le terminal, ces variables que vous avez créées n’existeront plus.
Cependant, votre distribution ajoute généralement des variables globales afin qu’elles soient accessibles dans tous vos scripts et shells.
Réécrivons quelques scripts. Vous devriez avoir créé le répertoire de script plus tôt, mais cette commande s’en chargera dans les deux cas :
mkdir -p bash_scripts && cd bash_scripts
En gros, cela créera bash_scripts
répertoire s’il n’existe pas déjà, puis basculez vers ce répertoire.
Ici. créons un nouveau script nommé knock.sh
avec le texte suivant.
#!/bin/bash
echo knock, knock
echo "Who's there?"
echo "It's me, $USER"
Modifiez l’autorisation du fichier et exécutez le script. Vous l’avez appris dans le chapitre précédent.
Voici ce que cela a produit pour moi:

Avez-vous remarqué qu’il y ajoutait automatiquement mon nom ? C’est la magie de la variable globale $USER qui contient le nom d’utilisateur.
Vous remarquerez peut-être également que j’ai utilisé le ” parfois avec écho mais pas d’autres fois. C’était délibéré. Les guillemets en bash ont des significations particulières. Ils peuvent être utilisés pour gérer les espaces blancs et autres caractères spéciaux. Permettez-moi de montrer un exemple.
Gestion des espaces dans les variables
Disons que vous devez utiliser une variable appelée greetings
qui a la valeur hello and welcome
.
Si vous essayez d’initialiser la variable comme ceci :
greetings=Hello and Welcome
Vous obtiendrez une erreur comme celle-ci :
Command 'and' not found, but can be installed with:
sudo apt install and
C’est pourquoi vous devez utiliser soit des guillemets simples, soit des guillemets doubles :
greetings="Hello and Welcome"
Et maintenant, vous pouvez utiliser cette variable comme vous le souhaitez.

Affecter la sortie de la commande à une variable
Oui! Vous pouvez stocker la sortie d’une commande dans une variable et les utiliser dans votre script. C’est ce qu’on appelle la substitution de commande.
var=$(command)
Voici un exemple :
[email protected]:~$ today=$(date +%D)
[email protected]:~$ echo "Today's date is $today"
Today's date is 06/19/23
[email protected]:~$

L’ancienne syntaxe utilisait des backticks au lieu de $() pour la substitution de commande. Bien que cela puisse toujours fonctionner, vous devez utiliser la nouvelle notation recommandée.
💡
Les variables changent la valeur sauf si vous déclarez une variable “constante” comme ceci : readonly pi=3.14
. Dans ce cas, la valeur de la variable pi
ne peut pas être modifié car il a été déclaré readlonly
.
🏋️ Temps d’exercice
Il est temps de mettre en pratique ce que vous avez appris. Voici quelques exercices pour tester votre apprentissage.
Exercice 1: écrivez un script bash qui imprime votre nom d’utilisateur, le répertoire de travail actuel, le répertoire personnel et le shell par défaut dans le format suivant.
Hello, there
My name is XYZ
My current location is XYZ
My home directory is XYZ
My default shell is XYZ
Indice: Utilisez les variables globales $USER, $PWD, $HOME et $SHELL.
Exercice 2 : Écrivez un script bash qui déclare une variable nommée price
. Utilisez-le pour obtenir la sortie au format suivant :
Today's price is $X
Tomorrow's price is $Y
Où X est la valeur initiale de la variable price
et il est doublé pour les prix de demain.
Indice: Utilisez / pour échapper le caractère spécial $.
Les réponses aux exercices peuvent être discutées dans ce fil dédié de la communauté.
Exercice pratique dans Bash Basics Series #2 : Utilisation de variables dans Bash
Si vous suivez la série Bash Basics sur It’s FOSS, vous pouvez soumettre et discuter des réponses à l’exercice à la fin du chapitre : Les membres expérimentés sont encouragés à faire part de leurs commentaires aux nouveaux membres. Notez qu’il peut y avoir plus d’une réponse à un problème donné.

Dans le prochain chapitre de la série Bash Basics, vous verrez comment rendre les scripts bash interactifs en passant des arguments et en acceptant les entrées de l’utilisateur.