GNU/Linux >> Tutoriels Linux >  >> Linux

Bash Scripting - Variables expliquées avec des exemples

Les variables sont des concepts très importants dans tout langage de programmation avec lequel vous travaillez. Considérez une variable comme un conteneur en mémoire qui stocke des données d'un certain type. Le but principal des variables est de stocker une valeur et d'y accéder ultérieurement pour le traitement. Si vous êtes quelqu'un d'autres langages de programmation comme Java, C, C++, vous pouvez trouver des différences dans la façon dont la définition de la variable diffère puisque Bash n'a pas de système de type fort.

Bash gère deux types de variables. Ce sont :

  • Variables définies par l'utilisateur  :Variables que vous créez et manipulez.
  • Variables environnementales  :créé et stocké par bash ou des applications pour le système/l'objectif de l'application.

Nous allons commencer à travailler avec des variables définies par l'utilisateur suivies de variables environnementales.

1. Comment créer une variable

La variable doit avoir un identifiant (nom de variable) et une valeur qui lui est attribuée comme indiqué ci-dessous. L'identifiant (nom de la variable) est "site_name" et la valeur attribuée est "OSTechnix" .

$ site_name="OSTechnix"
$ this_year=2021
$ value_of_pi=3.14

Il y a peu de choses à retenir lors de la création de variables.

  • Il ne doit pas y avoir d'espace entre le nom de la variable et sa valeur.
  • Essayez d'éviter d'utiliser des noms déjà utilisés tels que des mots-clés bash réservés, des noms de variables et de fonctions qui créeront des conflits.
  • Créez des noms de variables descriptifs. Les noms de variables peuvent contenir des lettres, des chiffres, des traits de soulignement et des chiffres.

La convention de dénomination des variables est discutable car j'ai vu différentes personnes utiliser différentes conventions pour créer des noms de variables. Certains créent des variables définies par l'utilisateur en utilisant la casse du serpent comme je l'ai créé dans l'exemple précédent et certains créent des noms de variables avec des majuscules. Il n'y a pas de règles strictes dans bash mais soyez cohérent avec la méthode que vous choisissez. Je préfère nommer mes variables en cas de serpent et les constantes en majuscules.

2. Comment accéder aux variables Bash

Il existe deux manières d'accéder à une variable. L'un utilise "$ symbol" suivi du nom de la variable et la seconde méthode utilise le "$ symbol" suivi d'accolades et d'un nom de variable à l'intérieur des accolades.

$ echo $site_name
OSTechnix
$ echo ${this_year}
2021
$ echo ${this_year} $value_of_pi
2021 3.14

3. Réattribuer une valeur à une variable

Bash n'a pas de système de type fort, ce qui signifie qu'il n'y a pas de règles strictes pour définir le type de données lors de la création des variables. La variable Bash stocke toutes les valeurs sous forme de chaînes et sait intelligemment quand nous travaillons avec un calcul numérique.

Vous pouvez réaffecter n'importe quelle valeur à une variable déjà créée.

$ os_name="PoP_OS!"
$ echo ${os_name}
PoP_OS!
$ os_name="Linux Mint"
$ echo ${os_name}
Linux Mint

4. Déclarer le type de données pour une variable

Vous pouvez utiliser le declare commande pour créer une variable avec un type de données spécifique. Accéder à la section d'aide de declare commande pour en savoir plus.

$ declare --help

Par exemple, si vous souhaitez créer une variable avec le int type de données, vous pouvez utiliser le declare commande avec le -i drapeau.

$ declare -i pi
$ pi=3
$ echo $pi
3
$ pi=3.14
bash: 3.14: syntax error: invalid arithmetic operator (error token is ".14")

Rappelez-vous, le declare command est un moyen de manipuler l'attribut de votre variable mais ne vous attendez pas à un système de type fort de declare commande comme dans d'autres langages de programmation.

5. Sortie de commande vers une variable

Vous pouvez exécuter n'importe quelle commande bash et stocker la sortie de la commande dans la variable. Vous devez exécuter la commande dans $() comme ci-dessous et plus tard utiliser la variable pour un traitement ultérieur.

$ today_date=$(date)
$ echo ${today_date}
Saturday 11 September 2021 08:53:25 PM IST

6. Utiliser des guillemets avec une variable

Dans bash, les guillemets simples et doubles se comportent de deux manières différentes. Les guillemets simples empêcheront l'expansion et traiteront la valeur comme littérale. Les guillemets doubles permettront l'expansion.

Jetez un oeil à l'exemple ci-dessous. J'ai créé une variable nommée "which_year" et exécuter une commande avec une chaîne. Lorsque j'utilise des guillemets doubles, la date la commande sera développée mais lorsque des guillemets simples sont utilisés, la date La commande ne s'exécutera pas et est stockée telle quelle dans la variable.

$ which_year="I am in year : $(date +%Y)"
$ echo ${which_year}
I am in year : 2021
$ which_year='I am in year : $(date +%Y)'
$ echo ${which_year}
I am in year : $(date +%Y)'

7. Suppression de la variable

Vous pouvez supprimer la variable en utilisant le unset commande.

Le Unset La commande supprime les valeurs et les attributs des variables et des fonctions.

Vous pouvez soit utiliser unset avec -v drapeau qui pointe vers une variable ou simplement unset commande qui, par défaut, vérifie d'abord la définition de la variable et l'annule.

$ echo ${which_year}
$ unset -v which_year (or) unset which_year
$ echo ${which_year}

Pour plus de détails, reportez-vous à unset section d'aide aux commandes.

$ unset --help

8. Variable en lecture seule

Un état en lecture seule signifie que vous ne pouvez pas modifier la valeur ou supprimer la variable une fois qu'elle est créée. Il existe deux façons de créer la variable en lecture seule.

Utiliser bash intégré readonly pour créer la variable en lecture seule.

$ readonly var1="This is a readonly variable"

Alternativement, vous pouvez utiliser le declare commande avec le -r drapeau.

$ declare -r var2="This is a readonly variable too"

Vous ne pouvez pas réaffecter ou supprimer le readonly valeur de la variable, cela générera une erreur.

$ var2="Reassigning with new value"
bash: var2: readonly variable
$ unset var1
bash: unset: var1: cannot unset: readonly variable

9. Variables spéciales intégrées de Bash

Bash a des variables intégrées spéciales qui sont dédiées au stockage de certains résultats. Jetez un œil à la liste de variables ci-dessous.

$? = Stores exit status of last ran the command.
$$ = Stores process ID for your bash session.
$0 = Script name.
$1 .. $9 = Arguments passed to the script.
$# = Count the length of values
[email protected], $* = Stores array of all values.

9.1. Statut de sortie ($ ?)

Chaque commande Linux que vous exécutez a un code de sortie associé de (0-255). Zéro indique le succès et le reste indique l'échec avec une signification différente.

$ whoami
$ echo $?
0
$ asdf # WRONG COMMAND
$ echo $?
127

9.2. ID de processus ($$)

Utiliser $$ opérateur, vous pouvez obtenir l'ID du processus bash. Si vous l'exécutez depuis le terminal, il vous donnera l'identifiant du processus pour votre session en cours.

$ echo $$
195777 # PROCESS ID OF MY CURRENT TERMINAL SESSION

9.3. Nom du script et arguments ($0-$9)

Des arguments peuvent être transmis à vos scripts et vous les avez peut-être déjà utilisés dans votre vie de tous les jours. Jetez un oeil à l'id commande qui accepte le nom d'utilisateur comme argument.

$ id karthick
uid=1000(karthick) gid=1000(karthick) groups=1000(karthick),4(adm),27(sudo),119(lpadmin),998(docker)

De même, vous pouvez créer des scripts qui acceptent des arguments. Créez un exemple de script shell et copiez/collez-y l'extrait suivant.

cat > main.sh
#!/bin/bash

echo "+ script_name=$0 "
echo "+ first_argument=$1 "
echo "+ second_argument=$2 "
echo "+ third_argument=$3 "

Exécutez maintenant le script et passez les arguments. Je passe 1 à 3 comme arguments. $0 récupère le nom du script avec le chemin absolu puisque j'ai passé le chemin absolu et $1 à $3 est assigné avec les arguments respectifs passés.

$ /home/karthick/main.sh 1 2 3
+ script_name=/home/karthick/main.sh 
+ first_argument=1 
+ second_argument=2 
+ third_argument=3 

9.4. Longueur d'une valeur ($#)

Utilisation de $# , vous pouvez calculer le nombre total d'arguments passés ou compter la longueur de n'importe quelle valeur. Jetez un oeil à l'exemple ci-dessous. Préfixez le nom de la variable avec # et il imprimera la longueur de la valeur au lieu de la valeur réelle.

$ site_name="OSTechnix"
$ echo ${#site_name}
9

10. Portée variable

Il est important que vous compreniez la portée d'une variable. Lorsque vous créez une variable dans un terminal ou via un script shell, cette variable est liée et disponible uniquement pour cette session. Vous pouvez également le dire comme une variable locale. Si vous essayez d'accéder à la variable à partir d'autres sessions, la variable ne sera pas disponible.

Jetez un oeil à l'image ci-dessous qui vous donnera une bonne compréhension de ce qui se passe.

  1. Créer la variable site_name="OSTechnix" depuis votre shell actuel et accédez à la variable.
  2. Utilisez la $$ variable pour voir dans quelle session vous vous trouvez.
  3. Créez une nouvelle session bash en saisissant "bash" .
  4. Essayez d'accéder à la variable site_name de cette séance. Vous obtiendrez une sortie vide qui est le comportement par défaut dans bash.
  5. Quitter la nouvelle session en saisissant "Exit" et maintenant essayez d'accéder à la variable et vous pourrez accéder à la variable.

Si vous souhaitez accéder à la variable globalement à partir de n'importe quelle session, vous devez utiliser le export commande qui rendra la variable accessible dans toutes les sessions/processus enfants créés à partir de votre session actuelle.

$ site_name="OSTechnix"
$ export site_name

Ou

$ export site_name="OSTechnix"
$ bash
$ echo ${site_name}

Vous pouvez obtenir la liste des variables à exporter en tapant "export" depuis la borne. Vous obtiendrez des listes de variables environnementales et définies par l'utilisateur.

$ export

11. Variable d'environnement

Jusqu'à présent, nous avons vu comment travailler avec des variables définies par l'utilisateur. Dans la section d'introduction, j'ai mentionné que bash prend en charge les variables environnementales. Cet ensemble de variables sera chargé lorsque vous démarrerez vos sessions bash et elles seront maintenues par bash. Ces variables d'environnement sont utilisées par les applications pour décider du comportement.

Par exemple, nano est défini comme éditeur par défaut pour l'édition de crontab . Si je souhaite utiliser Vim au lieu de nano, je peux définir l'environnement EDITOR variable et crontab vérifieront cette variable d'environnement et l'utiliseront.

$ export EDITOR="vim"
$ crontab -e

Attention : Votre variable est liée uniquement à votre session en cours. Si vous souhaitez le rendre persistant, vous devez le mettre dans ~/.bashrc ou ~/.bash_profile .

Vous pouvez obtenir la liste des variables d'environnement en exécutant le "printenv" commande. Vous verrez que les variables environnementales sont définies avec des majuscules.

$ printenv

Vous pouvez également accéder à la variable d'environnement particulière avec la commande printenv. Vous trouverez ci-dessous certaines des variables environnementales courantes que vous rencontrerez.

$ printenv USER # PRINTS USER NAME
karthick
$ printenv HOME # USER HOME DIRECTORY LOCATION
/home/karthick
$ printenv PWD # PRESSENT WORKING DIRECTORY
/home/karthick
$ printenv SHELL # WHICH SHELL I AM USING NOW
/bin/bash
$ printenv PATH # PATH WHICH IS USED BY BASH TO CHECK AND RUN COMMANDS
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Conclusion

Dans ce guide des variables Bash, nous avons commencé par une brève introduction sur les variables et sur la façon de les créer, d'y accéder, de les modifier et de les désactiver dans leur section respective. Et puis nous avons vu quelle est la différence entre les variables définies par l'utilisateur et les variables environnementales. Essayez d'explorer la liste des variables d'environnement qui sont chargées dans vos sessions, ce qui vous donnera une bonne compréhension de Bash.

Lire connexe :

  • Scripts bash – Explication de la boucle For avec des exemples
  • Scripts bash :boucle While et Until expliquée à l'aide d'exemples
  • Scripts bash – Fonctions expliquées à l'aide d'exemples
  • La commande Bash Echo expliquée avec des exemples sous Linux
  • Tutoriel Bash Heredoc pour les débutants
  • La redirection bash expliquée avec des exemples
  • Différence entre la définition de variables bash avec et sans exportation

Linux
  1. Comment écrire un script bash avec des exemples

  2. Différence entre la définition de variables bash avec et sans exportation

  3. Script bash (I)

  4. Instruction Bash If-Else avec des exemples

  5. Alias ​​avec variable dans bash

Commande Tr sous Linux expliquée avec des exemples

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

Bash Scripting Part2 - Boucles For et While avec exemples

Tutoriel d'introduction aux scripts Bash avec 5 exemples pratiques

Tutoriel sur les variables Bash - 6 exemples pratiques de variables globales et locales Bash

Script bash pour la boucle expliqué avec des exemples