Vous connaissez probablement les variables dans les scripts shell Bash.
Comme d'autres langages de programmation et de script, vous utilisez des variables pour stocker les données, puis les référencez ultérieurement dans les commandes futures.
name="Linux Handbook"
echo "Hello $name!"
Et il affichera "Hello Linux Handbook!".
En dehors de l'exemple ci-dessus, il y a aussi une quantité étonnamment grande de choses que vous pouvez faire avec les variables, comme remplir une valeur par défaut lorsque la variable n'est pas définie et attribuer plusieurs valeurs à une seule variable.
Laissez-moi vous montrer ces utilisations inhabituelles et avancées des variables dans les scripts bash.
Utiliser des tableaux
En excluant l'exemple ci-dessus, le type de variable le plus courant que vous trouverez dans Bash est les tableaux :
name=("Linux Handbook" "It's FOSS")
L'exemple ci-dessus attribue à la fois Linux Handbook
et It's FOSS
comme valeurs pour le name
variables.
Comment procédez-vous pour accéder à chaque valeur ?
Si vous exécutez echo $name
, vous verrez qu'il imprime la première valeur, Linux Handbook
. Pour accéder aux autres valeurs, vous devrez utiliser une syntaxe différente pour les variables.
Pour commencer à extraire les autres valeurs, commençons par nous familiariser avec les éléments suivants :
echo "Hello ${name}!"
C'est la base de ce qui vous permettra d'obtenir toutes les valeurs de la variable, et c'est aussi ce qui va vous permettre d'effectuer le reste des méthodes d'interaction avec les variables tout au long de cet article.
Pour en revenir à l'exemple ci-dessus, vous pouvez utiliser le ${variable[number]}
syntaxe pour extraire un certain élément d'une variable :
echo "Hello ${name[1]}!"
Celui-ci affichera "Hello It's FOSS !"
Si vous ne pouviez pas déjà voir dans l'exemple ci-dessus, le premier élément du tableau commence en fait à 0 au lieu de 1.
Donc, pour tirer le Linux Handbook
valeur, vous tireriez l'élément à la position 0 :
echo "Hello ${name[0]}!"
De même, en omettant simplement le [number]
part le définit simplement par défaut sur le premier élément du tableau (c'est-à-dire à l'index 0).
Et ceux-ci constituent tous les types de variables que vous trouverez réellement dans Bash.
Voyons maintenant comment vous pouvez réellement travailler avec et modifier la sortie de ces variables lorsque nous les appelons.
Définir la valeur lorsqu'une variable n'est pas définie
Vous pouvez redéfinir une variable par défaut sur une certaine chaîne lorsqu'une variable n'est pas définie comme suit :
${variable:-string}
Prenons cet exemple :
echo "Hello ${name:-nobody}!"
Depuis la variable name
n'est pas défini, il sera par défaut nobody
et la commande ci-dessus affichera "Bonjour personne !".
Si la variable est définie au préalable, sa valeur sera utilisée :
name="Linux Handbook"
echo "Hello ${name:-nobody}!"
La commande ci-dessus affiche "Hello Linux Handbook !"
Définir la valeur lorsqu'une variable est déjà défini
Vous pouvez également définir une variable pour renvoyer une certaine valeur lorsque la variable est Positionner. Cela entraînerait l'impression par la variable d'une certaine chaîne chaque fois qu'elle est définie, et n'imprime rien si ce n'est pas le cas.
La syntaxe de cette méthode est similaire à la précédente, mais utilise le +
signe au lieu de -
.
${variable:+string}
Prenons cet exemple où le nom de la variable n'est pas défini. Il n'imprimera donc rien pour cette partie variable et la sortie de la commande sera "Hello !"
echo "Hello ${name:+person}!"
Modifiez l'exemple ci-dessus et définissez la variable name
. Avec cette méthode spéciale, il n'utilisera pas la valeur déjà définie et utilisera celle que vous avez fournie.
name="Linux Handbook"
echo "Hello ${name:+person}!"
La commande ci-dessus affichera "Hello person!".
Vous trouverez probablement plus de cas d'utilisation avec la ${variable:-string}
syntaxe, comme certains des avantages de ${variable:+string}
peut déjà être accompli avec d'autres outils comme les tests ([]
) opérateur :
Références indirectes aux variables
Le prochain exemple utilisera la syntaxe suivante :
${!variable}
Celui-ci est un peu plus complexe dans son fonctionnement, mais prend tout son sens une fois que vous avez vu comment cela fonctionne :
name="Linux Handbook"
variable="name"
echo "Hello ${!variable}!"
Il affichera "Hello Linux Handbook".
Ce !
caractère avant le nom de la variable provoque le remplacement du nom de variable normal, mais utilise ensuite le nom de c'est tring pour trouver la variable pertinente.
De même :
variable
est substitué à la chaînename
, suivi de :name
étant remplacé par sa valeur deLinux Handbook
.
Rechercher la longueur d'une variable
Utilisons la méthode précédente, mais échangeons le !
caractère pour #
:
${#variable}
L'utilisation de cette méthode imprimera la longueur de la variable, mais agira légèrement différemment selon que la variable est une chaîne ou un tableau.
Utiliser cette syntaxe sur une chaîne entraînera le remplacement de la variable par le nombre de caractères dans la chaîne.
variable="name"
echo "Length is ${#variable}."
Il imprimera 4. Mais d'un autre côté, l'utiliser sur un tableau imprimera le nombre d'éléments à l'intérieur du tableau, c'est-à-dire la taille du tableau, qui est de 2 ici.
variable=("name" "word")
echo "Length is ${#variable}."
Mise en minuscules et capitalisation des chaînes
Enfin, vous pouvez capitaliser et minuscules une chaîne en utilisant le ^
et ,
opérateurs respectivement.
Vous les fournissez à la fin du nom de la variable comme ceci :
# Capitalizes
${variable^}
${variable^^}
# Lowercases
${variable,}
${variable,,}
Quelle est la différence entre fournir un et deux des caractères ?
Fournir un seul (c'est-à-dire ${variable^}
) ne modifiera que la première lettre, tout en fournissant deux (${variable^^}
) entraînera la modification de la chaîne entière.
L'exemple ci-dessous imprime Name
au lieu de name
:
variable="name"
echo "${variable^}"
Mais celui-ci imprime NAME
:
variable="name"
echo "${variable^^}"
De même, vous pouvez également imprimer des variables en minuscules.
L'exemple ci-dessous imprimera wIDEname
:
variable="WIDEname"
echo "${variable,}"
Et celui-ci imprimera widename
:
variable="WIDEname"
echo "${variable,,}"
Conclusion
Ce ne sont là que quelques-unes des façons dont vous pouvez utiliser des variables à l'intérieur de Bash. Vous pouvez trouver plusieurs autres façons d'interagir avec les variables dans la documentation de Bash sur l'expansion des variables.
Vous avez des questions sur le fonctionnement des exemples ci-dessus, ou quelque chose ne fonctionne tout simplement pas ? N'hésitez pas à en laisser dans la section des commentaires ci-dessous.