Introduction
Dans cet atelier, vous allez apprendre à manipuler les variables shell sous Linux. Les variables shell sont essentielles pour stocker et manipuler des données au sein des scripts. Elles peuvent contenir différents types de valeurs, telles que des nombres, des caractères ou des chaînes de texte. Ce guide vous accompagnera dans la création, le référencement et l'utilisation des variables, posant ainsi les bases solides de la programmation en langage shell.
Créer des variables Shell
On crée une variable shell en lui affectant une valeur à l'aide du signe =. Commençons par créer un script simple qui définit quelques variables.
Ouvrez un terminal dans votre WebIDE (VS Code).
Créez un nouveau fichier nommé
variables.shdans le répertoire/home/labex/project:touch /home/labex/project/variables.shOuvrez le fichier
variables.shdans le WebIDE et ajoutez le contenu suivant :#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' echo "Price per apple: $PRICE_PER_APPLE" echo "My first letters: $MyFirstLetters" echo "Greeting: $greeting"Dans ce script, nous avons créé trois variables :
PRICE_PER_APPLE: Une variable de type entier.MyFirstLetters: Une variable de type chaîne de caractères.greeting: Une chaîne de caractères contenant plusieurs espaces consécutifs.
Enregistrez le fichier.
Rendez le script exécutable :
chmod +x /home/labex/project/variables.shExécutez le script :
./variables.shVous devriez obtenir le résultat suivant :
Price per apple: 5 My first letters: ABC Greeting: Hello world!Remarquez que les espaces supplémentaires dans la variable
greetingsont conservés lors de l'affichage, car nous avons utilisé des guillemets simples lors de la définition de la variable, même si nous n'en avons pas utilisé dans l'instruction echo.
Référencer des variables Shell
Lorsqu'on référence des variables shell, certains scénarios nécessitent l'usage d'une syntaxe spécifique. Explorons ces différents cas de figure.
Ouvrez le fichier
variables.shdans le WebIDE.Remplacez le contenu du fichier par le suivant :
#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' ## Échappement des caractères spéciaux echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE" ## Éviter l'ambiguïté echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ" ## Préservation des espaces blancs echo $greeting echo "$greeting"Enregistrez le fichier.
Exécutez le script :
./variables.shVous devriez voir le résultat suivant :
The price of an Apple today is: $HK 5 The first 10 letters in the alphabet are: ABCDEFGHIJ Hello world! Hello world!Notez bien les différences :
- Le signe
$est échappé dans la première ligne pour être affiché littéralement. - Les accolades
{}sont utilisées pour délimiter clairement le nom de la variable dans la deuxième ligne, évitant toute confusion avec le texte qui suit. - Les deux dernières lignes illustrent la différence entre l'utilisation ou non des guillemets lors du référencement d'une variable contenant des espaces.
- Le signe
Substitution de commandes
La substitution de commande permet d'utiliser le résultat d'une commande comme valeur d'une variable. Cela s'effectue en entourant la commande par $() ou par des accents graves (backticks `).
Ouvrez le fichier
variables.shdans le WebIDE.Ajoutez le contenu suivant à la fin du fichier :
## Command substitution CURRENT_DATE=$(date +"%Y-%m-%d") echo "Today's date is: $CURRENT_DATE" FILES_IN_DIR=$(ls) echo "Files in the current directory:" echo "$FILES_IN_DIR" UPTIME=$(uptime -p) echo "System uptime: $UPTIME"Enregistrez le fichier.
Exécutez le script :
./variables.shVous devriez obtenir un résultat similaire à celui-ci (les valeurs réelles dépendront de votre système) :
Today's date is: 2023-08-16 Files in the current directory: variables.sh System uptime: up 2 hours, 15 minutesDans cet exemple :
$(date +"%Y-%m-%d")exécute la commandedateet récupère sa sortie.$(ls)exécute la commandelset capture la liste des fichiers.$(uptime -p)exécute la commandeuptimeavec l'option-ppour obtenir la durée de fonctionnement du système.
Opérations arithmétiques
Les variables shell peuvent également être utilisées pour effectuer des calculs. Bash propose la syntaxe $((expression)) pour réaliser des opérations arithmétiques.
Créez un nouveau fichier nommé
arithmetic.shdans le répertoire/home/labex/project:touch /home/labex/project/arithmetic.shOuvrez le fichier
arithmetic.shdans le WebIDE et insérez le contenu suivant :#!/bin/bash X=10 Y=5 ## Addition SUM=$((X + Y)) echo "Sum of $X and $Y is: $SUM" ## Subtraction DIFF=$((X - Y)) echo "Difference between $X and $Y is: $DIFF" ## Multiplication PRODUCT=$((X * Y)) echo "Product of $X and $Y is: $PRODUCT" ## Division QUOTIENT=$((X / Y)) echo "Quotient of $X divided by $Y is: $QUOTIENT" ## Modulus (remainder) REMAINDER=$((X % Y)) echo "Remainder of $X divided by $Y is: $REMAINDER" ## Increment X=$((X + 1)) echo "After incrementing, X is now: $X" ## Decrement Y=$((Y - 1)) echo "After decrementing, Y is now: $Y"Enregistrez le fichier.
Rendez le script exécutable :
chmod +x /home/labex/project/arithmetic.shExécutez le script :
./arithmetic.shVous devriez voir le résultat suivant :
Sum of 10 and 5 is: 15 Difference between 10 and 5 is: 5 Product of 10 and 5 is: 50 Quotient of 10 divided by 5 is: 2 Remainder of 10 divided by 5 is: 0 After incrementing, X is now: 11 After decrementing, Y is now: 4Ce script démontre les différentes opérations arithmétiques de base réalisables avec des variables shell.
Utilisation des variables d'environnement
Les variables d'environnement sont un type de variable accessible à tous les processus s'exécutant dans la session shell actuelle. Explorons quelques variables d'environnement courantes et apprenons à créer les nôtres.
Créez un nouveau fichier nommé
environment.shdans le répertoire/home/labex/project:touch /home/labex/project/environment.shOuvrez le fichier
environment.shdans le WebIDE et ajoutez le contenu suivant :#!/bin/bash ## Displaying some common environment variables echo "Home directory: $HOME" echo "Current user: $LOGNAME" echo "Shell being used: $SHELL" echo "Current PATH: $PATH" ## Creating a new environment variable export MY_VARIABLE="Hello from my variable" ## Displaying the new variable echo "My new variable: $MY_VARIABLE" ## Creating a child process to demonstrate variable scope bash -c 'echo "MY_VARIABLE in child process: $MY_VARIABLE"' ## Removing the environment variable unset MY_VARIABLE ## Verifying the variable is unset echo "MY_VARIABLE after unsetting: $MY_VARIABLE"Enregistrez le fichier.
Rendez le script exécutable :
chmod +x /home/labex/project/environment.shExécutez le script :
./environment.shVous devriez obtenir un résultat semblable à celui-ci :
Home directory: /home/labex Current user: labex Shell being used: /bin/zsh Current PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin My new variable: Hello from my variable MY_VARIABLE in child process: Hello from my variable MY_VARIABLE after unsetting:Ce script montre comment accéder aux variables d'environnement existantes, comment en créer de nouvelles via
exportet comment les supprimer avecunset.
Résumé
Au cours de cet atelier, vous avez appris à manipuler les variables shell sous Linux. Vous avez exploré la création et le référencement de variables, l'utilisation de la substitution de commandes pour affecter des résultats à des variables, la réalisation d'opérations arithmétiques et la gestion des variables d'environnement. Ces compétences constituent le socle indispensable pour l'écriture de scripts shell et vous seront d'une aide précieuse dans votre administration de systèmes Linux.
Les points clés à retenir de cet atelier sont :
- La création et le référencement des variables shell.
- L'utilisation d'une syntaxe spécifique pour le référencement selon le contexte.
- L'usage de la substitution de commande pour capturer des sorties de programmes.
- L'exécution de calculs arithmétiques simples.
- La manipulation des variables d'environnement.
Tout au long de votre progression dans l'univers Linux, gardez à l'esprit que les variables sont des outils puissants pour stocker et transformer des données. Pratiquez leur utilisation pour rendre vos scripts plus flexibles et réutilisables.



