Utilisation des variables Shell

ShellBeginner
Pratiquer maintenant

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.

  1. Ouvrez un terminal dans votre WebIDE (VS Code).

  2. Créez un nouveau fichier nommé variables.sh dans le répertoire /home/labex/project :

    touch /home/labex/project/variables.sh
    
  3. Ouvrez le fichier variables.sh dans 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.
  4. Enregistrez le fichier.

  5. Rendez le script exécutable :

    chmod +x /home/labex/project/variables.sh
    
  6. Exécutez le script :

    ./variables.sh
    

    Vous 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 greeting sont 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.

  1. Ouvrez le fichier variables.sh dans le WebIDE.

  2. 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"
    
  3. Enregistrez le fichier.

  4. Exécutez le script :

    ./variables.sh
    

    Vous 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.

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 `).

  1. Ouvrez le fichier variables.sh dans le WebIDE.

  2. 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"
    
  3. Enregistrez le fichier.

  4. Exécutez le script :

    ./variables.sh
    

    Vous 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 minutes
    

    Dans cet exemple :

    • $(date +"%Y-%m-%d") exécute la commande date et récupère sa sortie.
    • $(ls) exécute la commande ls et capture la liste des fichiers.
    • $(uptime -p) exécute la commande uptime avec l'option -p pour 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.

  1. Créez un nouveau fichier nommé arithmetic.sh dans le répertoire /home/labex/project :

    touch /home/labex/project/arithmetic.sh
    
  2. Ouvrez le fichier arithmetic.sh dans 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"
    
  3. Enregistrez le fichier.

  4. Rendez le script exécutable :

    chmod +x /home/labex/project/arithmetic.sh
    
  5. Exécutez le script :

    ./arithmetic.sh
    

    Vous 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: 4
    

    Ce 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.

  1. Créez un nouveau fichier nommé environment.sh dans le répertoire /home/labex/project :

    touch /home/labex/project/environment.sh
    
  2. Ouvrez le fichier environment.sh dans 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"
    
  3. Enregistrez le fichier.

  4. Rendez le script exécutable :

    chmod +x /home/labex/project/environment.sh
    
  5. Exécutez le script :

    ./environment.sh
    

    Vous 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 export et comment les supprimer avec unset.

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.