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.
- Créer la variable
site_name="OSTechnix"
depuis votre shell actuel et accédez à la variable. - Utilisez la
$$ variable
pour voir dans quelle session vous vous trouvez. - Créez une nouvelle session bash en saisissant
"bash"
. - 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. - 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