Travailler avec les variables de shell

ShellShellBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à utiliser les variables de shell sous Linux. Les variables de shell sont essentielles pour stocker et manipuler des données dans les scripts shell. Elles peuvent contenir différents types de valeurs telles que des nombres, des caractères ou des chaînes de caractères. Ce laboratoire vous guidera tout au long de la création, de la référence et de l'utilisation des variables de shell, vous offrant ainsi une base solide pour l'écriture de scripts shell.

Créer des variables de shell

Les variables de shell sont créées en leur assignant une valeur à l'aide du signe =. Commençons par créer un simple script shell 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 entière
    • MyFirstLetters : Une variable de type chaîne de caractères
    • greeting : Une variable de type chaîne de caractères avec plusieurs espaces
  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 voir la sortie suivante :

    Price per apple: 5
    My first letters: ABC
    Greeting: Hello        world!

    Notez que les espaces supplémentaires dans la variable greeting sont conservés dans la sortie lorsque vous utilisez des guillemets simples pour définir la variable et que vous n'utilisez pas de guillemets dans l'instruction echo.

Référencer des variables de shell

Lorsque vous référencez des variables de shell, il existe quelques scénarios où vous devez utiliser une syntaxe spéciale. Explorons ces cas.

  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"
    
    ## Conserver les espaces
    echo $greeting
    echo "$greeting"
  3. Enregistrez le fichier.

  4. Exécutez le script :

    ./variables.sh

    Vous devriez voir la sortie suivante :

    The price of an Apple today is: $HK 5
    The first 10 letters in the alphabet are: ABCDEFGHIJ
    Hello world!
    Hello        world!

    Notez les différences :

    • Le signe $ est échappé dans la première ligne pour l'afficher littéralement.
    • Des accolades {} sont utilisées pour définir clairement le nom de la variable dans la deuxième ligne.
    • Les deux dernières lignes montrent la différence entre l'utilisation de guillemets et leur non-utilisation lors de la référence à une variable contenant des espaces.

Substitution de commande

La substitution de commande vous permet d'utiliser la sortie d'une commande comme valeur d'une variable. Cela se fait en encadrant la commande avec $() ou des accents graves (``).

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

  2. Ajoutez le contenu suivant à la fin du fichier :

    ## Substitution de commande
    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 voir une sortie similaire à celle-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 capture sa sortie.
    • $(ls) exécute la commande ls et capture sa sortie.
    • $(uptime -p) exécute la commande uptime avec l'option -p et capture sa sortie.

Opérations arithmétiques

Les variables de shell peuvent également être utilisées dans des opérations arithmétiques. Bash propose la syntaxe $((expression)) pour effectuer 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 ajoutez le contenu suivant :

    #!/bin/bash
    
    X=10
    Y=5
    
    ## Addition
    SUM=$((X + Y))
    echo "Sum of $X and $Y is: $SUM"
    
    ## Soustraction
    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"
    
    ## Modulo (reste)
    REMAINDER=$((X % Y))
    echo "Remainder of $X divided by $Y is: $REMAINDER"
    
    ## Incrémentation
    X=$((X + 1))
    echo "After incrementing, X is now: $X"
    
    ## Décrémentation
    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 la sortie suivante :

    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 diverses opérations arithmétiques utilisant des variables de shell.

Utilisation des variables d'environnement

Les variables d'environnement sont un type de variable disponible pour tous les processus s'exécutant dans la session shell actuelle. Explorons quelques variables d'environnement courantes et apprenons à en créer nos propres.

  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
    
    ## Affichage de quelques variables d'environnement courantes
    echo "Home directory: $HOME"
    echo "Current user: $LOGNAME"
    echo "Shell being used: $SHELL"
    echo "Current PATH: $PATH"
    
    ## Création d'une nouvelle variable d'environnement
    export MY_VARIABLE="Hello from my variable"
    
    ## Affichage de la nouvelle variable
    echo "My new variable: $MY_VARIABLE"
    
    ## Création d'un processus enfant pour démontrer la portée de la variable
    bash -c 'echo "MY_VARIABLE in child process: $MY_VARIABLE"'
    
    ## Suppression de la variable d'environnement
    unset MY_VARIABLE
    
    ## Vérification que la variable a été supprimée
    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 voir une sortie similaire à celle-ci (les valeurs réelles dépendront de votre système) :

    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, en créer de nouvelles et les supprimer.

Résumé

Dans ce laboratoire, vous avez appris à travailler avec les variables de shell sous Linux. Vous avez exploré la création et la référence de variables, l'utilisation de la substitution de commande pour assigner les sorties de commandes à des variables, l'exécution d'opérations arithmétiques avec des variables et le travail avec les variables d'environnement. Ces compétences constituent une base essentielle pour la programmation en shell et seront inestimables au fur et à mesure que vous continuerez à travailler avec les systèmes Linux.

Les principaux points clés de ce laboratoire sont les suivants :

  • Création et référence de variables de shell
  • Utilisation de la syntaxe spéciale pour la référence de variables dans différents scénarios
  • Utilisation de la substitution de commande pour capturer les sorties de commandes
  • Exécution d'opérations arithmétiques avec des variables de shell
  • Traitement des variables d'environnement

Alors que vous poursuivez votre parcours dans le domaine du Linux et de la programmation en shell, rappelez-vous que les variables sont des outils puissants pour stocker et manipuler des données. Entraînez-vous à les utiliser dans vos scripts pour rendre votre code plus flexible et réutilisable.