GNU/Linux >> Tutoriels Linux >  >> Linux

Bash Beginner Series #2 :Comprendre les variables dans les scripts shell Bash

Le temps change, les variables aussi !

Vous devez avoir joué un peu avec les variables si vous avez fait une sorte de programmation.

Si vous n'avez jamais travaillé avec des variables auparavant, vous pouvez les considérer comme un conteneur qui stocke une information qui peut varier dans le temps.

Les variables sont toujours utiles lors de l'écriture d'un script bash et dans ce didacticiel, vous apprendrez à utiliser des variables dans vos scripts bash.

Utilisation de variables dans les scripts shell bash

Dans le dernier tutoriel de cette série, vous avez appris à écrire un programme hello world en bash.

#! /bin/bash

echo 'Hello, World!'

C'était un simple script Hello World. Faisons-en un meilleur Hello World.

Améliorons ce script en utilisant des variables shell afin qu'il accueille les utilisateurs avec leurs noms. Modifiez votre script hello.sh et utilisez la commande read pour obtenir l'entrée de l'utilisateur :

#! /bin/bash

echo "What's your name, stranger?"

read name

echo "Hello, $name"

Maintenant, si vous exécutez votre script hello.sh; il vous demandera votre nom, puis il vous accueillera avec le nom que vous lui fournirez :

[email protected]:~/scripts$ ./hello.sh 
What's your name, stranger?
Elliot
Hello, Elliot

Dans l'exemple ci-dessus, j'ai entré Elliot comme nom, puis le script m'a accueilli avec "Bonjour, Elliot". C'est certainement bien mieux qu'un programme générique "Hello, World". Vous n'êtes pas d'accord ?

Explication étape par étape du script shell ci-dessus

Passons maintenant en revue le script ligne par ligne ici pour nous assurer que vous comprenez tout.

J'ai d'abord inclus la ligne shebang pour indiquer explicitement que nous allons utiliser bash shell pour exécuter ce script.

#!/bin/bash

Ensuite, je demande à l'utilisateur d'entrer son nom :

echo "What's your name, stranger?"

C'est juste une simple commande echo pour imprimer une ligne sur le terminal; assez explicite.

Voici maintenant la ligne où toute la magie opère :

read name

Ici, j'ai utilisé la commande read pour transférer le contrôle du script en cours d'exécution à l'utilisateur, afin que l'utilisateur puisse saisir un nom, puis stocker l'utilisateur saisi dans la variable 'name'.

Enfin, le script accueille l'utilisateur avec son nom :

echo “Hello, $name”

Remarquez ici que vous devez faire précéder le nom de la variable d'un signe dollar pour obtenir la valeur stockée dans le nom de la variable. Si vous omettez le signe dollar, "Bonjour, nom" s'affichera à la place.

Ce signe dollar est connu comme l'opérateur de déréférencement dans les scripts bash.

Entiers, chaînes ou caractères ? Comment créer différents types de données variables dans bash shell ?

Jouons un peu plus avec les variables.

Vous pouvez utiliser le signe égal pour créer et définir la valeur d'une variable. Par exemple, la ligne suivante créera une variable nommée age et fixera sa valeur à 27.

age=27

Après avoir créé la variable d'âge, vous pouvez modifier sa valeur autant que vous le souhaitez.

age=3

La commande ci-dessus change la valeur de la variable age de 27 à 3. Si seulement les temps pouvaient remonter, je vous entends dire !

Les variables peuvent contenir différents types de données ; les variables peuvent stocker des entiers, des chaînes et des caractères.

letter=’c’
color=’blue’
year=2020

Variables constantes dans le shell bash

Vous pouvez également créer une variable constante, c'est-à-dire une variable dont la valeur ne changera jamais ! Cela peut être fait en précédant le nom de votre variable avec le readonly commande :

readonly PI=3.14159

La commande ci-dessus créera une variable constante PI et définira sa valeur sur 3,14159. Maintenant, vous ne pouvez pas changer la valeur de la variable constante, si vous essayez, vous obtiendrez une erreur :

bash: PI: readonly variable

Comme vous pouvez le voir, vous ne pouvez lire que la valeur d'une variable constante, mais vous ne pouvez jamais modifier sa valeur après sa création.

Substitutions de commandes

La possibilité de stocker la sortie d'une commande dans une variable s'appelle la substitution de commande et c'est de loin l'une des fonctionnalités les plus étonnantes de bash.

La commande date est un exemple classique pour démontrer la substitution de commande :

TODAY=$(date)

La commande ci-dessus stockera la sortie de la date de la commande dans la variable AUJOURD'HUI. Remarquez comment vous devez encadrer la commande de date entre parenthèses et un signe dollar (à gauche).

Alternativement, vous pouvez également placer la commande dans une paire de guillemets :

TODAY=`date`

La méthode des guillemets inversés est l'ancienne méthode de substitution de commande, et je vous recommande donc fortement de l'éviter et de vous en tenir à l'approche moderne :

variable=$(command)

Avant de partir, essayez de transformer le script Hello World en un script HelloWorld intelligent

Maintenant que vous venez d'apprendre à effectuer une substitution de commande, il serait logique de visiter le script Hello World une dernière fois pour le perfectionner !

La dernière fois, vous avez demandé à l'utilisateur d'entrer son nom pour que le script l'accueille ; cette fois, vous n'allez pas demander, votre script le sait déjà !

Utilisez la commande whoami avec la substitution de commande pour saluer celui qui exécute le script :

#! /bin/bash           

echo "Hello, $(whoami)"

Comme vous pouvez le voir, vous n'aviez besoin que de deux lignes ! Exécutez maintenant le script :

./hello.sh

Cela fonctionne comme un charme !

Très bien, cela nous amène à la fin de ce tutoriel. Vous pouvez mettre en pratique ce que vous venez d'apprendre en résolvant les problèmes et vous référer à leurs solutions si vous êtes bloqué ou avez besoin d'un indice.

Bash Chapter 2 Practice QuestionsProblems et leur solution pour mettre en pratique ce que vous venez d'apprendre dans ce chapitreBash-Chapter-2-Practice-Questions-Linux-Handbook.pdf29 KB

J'espère que vous avez aimé travailler avec des variables shell autant que moi. Consultez le prochain chapitre de cette série, où j'explique comment vous pouvez passer des arguments à vos scripts shell.


Linux
  1. Stockage de la sortie de la commande dans la variable Shell ?

  2. Fonctions dans les variables shell ?

  3. Comment comparer des chaînes dans les scripts shell bash

  4. Bash Beginner Series #9 :Utiliser des fonctions dans Bash

  5. Bash Beginner Series #8 :Boucles dans Bash

Script bash (II)

Script bash (III)

Explication de la commande d'exportation sous Linux

Bash Beginner Series #1 :Créez et exécutez votre premier script shell Bash

Bash Beginner Series #5 :Utilisation des opérateurs arithmétiques dans les scripts Bash

Bash Beginner Series #6 :Opérations sur les chaînes dans Bash