Que sont les variables bash et comment pouvez-vous les utiliser ?

Que sont les variables bash et comment pouvez-vous les utiliser ?

Bash vous permet de mapper des chaînes entières de texte sur des variables uniques, ce qui simplifie son utilisation et l’écriture de scripts. Comment fonctionnent-ils et comment pouvez-vous les utiliser ? Découvrons-le.

Qu’est-ce qu’une variable bash ?

Les variables sont des noms faciles à retenir qui peuvent contenir différentes valeurs alphanumériques. Ils sont utiles, car ils permettent d’appliquer la même fonction sur différentes valeurs, sans avoir à réécrire un script/morceau de code. Ils facilitent également l’écriture du script/morceau de code, car au lieu de traiter des valeurs individuelles, vous pouvez utiliser le même nom pour chacune d’entre elles.

Variables en temps réel

Bash permet l’utilisation de variables. Vous pouvez créer des variables à la volée et les réutiliser pendant votre session Bash en cours. Ils peuvent vous aider à utiliser Bash de différentes manières et disparaîtront après la fin de la session en cours.

Par exemple, disons que vous visitez un tas de sites. Vous pourriez faire des recherches ou extraire des données et créer la variable suivante :

sitea=https://www.maketecheasier.com

Un terminal montrant une affectation de variable de base.

Après cela, si vous vouliez visiter notre site avec Firefox, il vous suffirait de taper :

firefox $sitea

Un terminal affichant une variable comme argument pour un programme.

Beaucoup plus facile – et plus lisible. La $siteavariable resterait mappée au site jusqu’à ce que vous modifiiez son contenu manuellement ou que la session Bash se termine. Et, bien sûr, vous pouvez créer plus de variables, telles que siteb, sitecet sited.

Lors de la configuration de nouvelles variables, vous pouvez utiliser tous les noms que vous souhaitez et stocker toutes les chaînes alphanumériques à l’intérieur. Gardez à l’esprit, cependant, qu’ils sont sensibles à la casse par défaut. Ainsi, $siteane serait pas la même chose que $SiteA. Notez également que vous devez utiliser des guillemets lorsque vous stockez des chaînes contenant des caractères spéciaux (y compris des espaces).

Variables dans les scripts

Les variables dans Bash sont plus utiles lors de l’écriture de scripts, car elles vous permettent d’écrire un seul script, qui peut ensuite parcourir différentes chaînes ou agir sur des données personnalisées. Disons que vous écrivez un script que tout le monde pourrait utiliser sur son ordinateur, mais qui afficherait à chaque fois un message d’accueil personnalisé. Sans variables, vous devriez écrire une version différente du script pour chaque utilisateur. Avec les variables, vous gardez le même script et ne changez que le nom de l’utilisateur.

Un tel script ressemblerait à ceci :

#!/bin/bash

username=Ramces
echo $username

Un terminal montrant un script d'affectation de variable de base.

L’exemple ci-dessus peut sembler redondant ; cependant, à mesure que la complexité du code augmente, les variables deviennent indispensables. Un script peut contenir des centaines ou des milliers de lignes et contenir le nom de l’utilisateur à différents endroits. Pour mieux le comprendre, considérez le script quelque peu différent suivant :

#!/bin/bash

username=Linus
echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.

Un terminal affichant un script de base avec plusieurs substitutions de variables.

Le script ci-dessus utilisera le nom défini comme usernamevariable pour compléter le texte. Si vous utilisez le nom de l’utilisateur réel, vous devrez le saisir quatre fois, puis faire de même pour l’utilisateur suivant, et encore quatre fois pour le suivant. Encore et encore. En l’affectant à une variable, vous n’avez qu’à le changer une fois pour chaque utilisateur, et chaque mention du nom de l’utilisateur dans le texte sera mise à jour.

Variables Bash permanentes et alias

Nous avons vu comment vous pouvez temporairement définir des variables et comment, pour quelque chose de plus permanent, vous pouvez les inclure dans vos propres scripts. Vous pouvez également définir de manière permanente des variables dans Bash en éditant le fichier « ~/.bashrc ».

  • Ouvrez le fichier « ~/.bashrc » dans votre éditeur de texte préféré.

nano ~/.bashrc

  • Nous vous suggérons de commencer par un test, en n’ajoutant qu’une seule variable, afin que vous sachiez où chercher si le processus ne fonctionne pas. Allez à la fin du fichier et, dans une nouvelle ligne, ajoutez votre variable.

myname="Ramces Red"

Un terminal affichant une nouvelle variable permanente dans le fichier bashrc.
  • Enregistrez votre fichier et quittez l’éditeur. Les ajustements ne seront pas appliqués immédiatement. Entrez ce qui suit dans votre terminal pour que cela prenne effet :

source ~/.bashrc

  • Utilisez la variable nouvellement définie dans votre session Bash :

echo $myname

Vous pouvez configurer autant de variables que vous le souhaitez et simplifier considérablement vos aventures quotidiennes dans Bash.

Pour une augmentation supplémentaire de la productivité, il vaut également la peine de configurer un autre type de variable : les alias. Contrairement aux variables typiques, qui sont mappées aux données que vous pouvez utiliser dans les commandes, les alias sont utilisés à la place des commandes réelles.

Tout comme vous pouvez utiliser une variable simple à mémoriser pour contenir de longues chaînes de texte, vous pouvez utiliser des alias comme alternatives simples aux commandes complexes.

Enfin, même si vous avez défini de manière permanente une variable dans. bashrc, vous pouvez lui réaffecter temporairement une valeur différente, comme nous l’avons vu précédemment. La variable présentera le nouveau contenu jusqu’à la fin de la session Bash en cours (après la déconnexion ou le redémarrage) ou jusqu’à ce que vous re-sourcez le fichier. fichier bashrc .

Création de tableaux

Alors que la plupart des utilisateurs de Bash considèrent les variables comme un simple lien entre une donnée et une étiquette, il est également possible de les utiliser comme marqueur pour les tableaux. Il s’agit d’un type de structure de données qui peut stocker plusieurs valeurs dans un format d’index numéroté. Pour créer un tableau, suivez les étapes ci-dessous :

  • Créez un script shell vide :

nano array.sh

  • Utilisez la declaresous-commande pour initialiser le tableau Bash dans le processus shell actuel.

declare -a myarray

Un terminal affichant l'étape de déclaration d'un tableau.
  • Remplissez votre nouveau tableau en utilisant l’opérateur d’affectation Bash intégré. Par exemple, la ligne de code suivante crée un tableau contenant cinq éléments :

myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)

Un terminal montrant un tableau de base avec 5 éléments.
  • Testez si votre nouveau tableau fonctionne en utilisant la echocommande pour en extraire les données :

echo ${myarray[1]}

Un terminal montrant le script de tableau récupérant un seul élément de tableau.

Vous pouvez également diffuser le contenu d’un tableau en utilisant l’opérateur « * »:

echo ${myarray[*]}

Un terminal affichant le script de tableau diffusant le tableau entier.

Exécution de variables de sous-shell

L’une des plus grandes fonctionnalités de Bash est sa capacité à créer des sous-shells, où les programmes peuvent s’exécuter comme s’il s’agissait de fonctions de base. Par exemple, écrire ls -adans un script shell et l’exécuter imprimera toujours le contenu du répertoire de travail actuel.

Un terminal affichant un sous-shell de commande simple.

Bien que cela puisse sembler limité, Bash étend cela en vous permettant de stocker la sortie de ces programmes dans des variables. Cela vous permet de les utiliser comme entrée pour d’autres programmes dans votre script.

  • Pour utiliser des variables de sous-shell, créez d’abord un script shell vide :

nano subshell.sh

  • Écrivez le code passe-partout suivant dans votre nouveau script shell :

#!/bin/bash

mysubshell=$(x)echo "The output of the variable is $mysubshell"

  • Remplacez le « x » par la commande que vous souhaitez exécuter et stocker la sortie. Par exemple, ce qui suit obtiendra le contenu du fichier world.txt et remplacera le mot « world » par « maketecheasier ».

mysubshell=$(sed s/world/maketecheasier/g world.txt)

Un terminal montrant une simple exécution de sous-shell.
  • Testez votre nouvelle variable de sous-shell en exécutant votre nouveau script :

chmod u+x. /subshell.sh
bash. /subshell.sh

Un terminal affichant la sortie du script de sous-shell.

Manipulation de sous-chaînes

En plus de stocker et de récupérer des données, vous pouvez également modifier le contenu des variables. Bash a un ensemble d’opérateurs que vous pouvez attacher à la fin de chaque variable, ce qui vous permettra d’affiner vos scripts sans appeler de programmes supplémentaires.

  • Créez un script shell vide :

nano substring.sh

  • Écrivez le code passe-partout suivant dans votre script vide :

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring}"

  • La manipulation de base des sous-chaînes se présente sous trois formes. Tout d’abord, le caractère « # » accepte un motif regex que le shell supprimera au début de la variable :

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring#*.}"

Un terminal montrant la manipulation de base des sous-chaînes de préfixe.
  • Deuxièmement, le caractère « % » accepte également un motif regex que le shell supprimera à la fin de la variable :

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring%.*}"

Un terminal montrant la manipulation de base des sous-chaînes postfixées.
  • Bash fournit également un moyen de modifier sélectivement le contenu d’une variable. Semblable au sedprogramme, vous pouvez utiliser le caractère « / » pour rechercher et remplacer n’importe quelle chaîne à l’intérieur d’une variable :

#!/bin/bash

mysubstring=hello.txt
echo "My filename is: ${mysubstring/hello/maketecheasier}"

Un terminal montrant une fonction de sous-chaîne d'édition de flux de base.

Questions fréquemment posées

Est-il possible d’exécuter un script shell dans une variable ?

Oui, en écrivant le chemin complet du script que vous souhaitez exécuter. Par exemple, l’exécution $(/home/ramces/.scripts/sample.sh)créera un sous-shell Bash et exécutera le script « sample.sh » à partir de mon répertoire personnel.

Pouvez-vous supprimer une variable pendant qu’un script est en cours d’exécution ?

Oui. Vous pouvez supprimer une variable d’un processus shell en cours d’exécution en insérant la unsetsous-commande suivie du nom de la variable dans votre script. Il est important de noter que l’exécution de cette commande ne supprimera aucune variable exécutée en dehors du processus shell actuel.

Pouvez-vous utiliser une variable permanente dans un script shell externe ?

Oui. Il est possible de faire référence à la valeur d’une variable qui a été déclarée en dehors du processus shell en cours. Cependant, vous devez également être prudent lorsque vous utilisez des variables externes, car il est facile de les écraser temporairement.

Crédit image : Unsplash . Toutes les modifications et captures d’écran par Ramces Red.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *