GNU/Linux >> Tutoriels Linux >  >> Linux

Manières inhabituelles d'utiliser des variables dans des scripts bash

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).

Index signifie simplement la position de l'élément dans le tableau. De même, l'index 0 est l'élément 0 à l'intérieur du tableau.

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îne name , suivi de :
  • name étant remplacé par sa valeur de Linux 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.


Linux
  1. Cinq façons d'utiliser les opérateurs de redirection dans Bash

  2. Script bash (I)

  3. Utiliser l'extension .sh ou .bash pour les scripts bash ?

  4. Exporter une variable de bash et l'utiliser en Python

  5. bash - correspondance insensible à la casse de la variable

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

Bash Scripting - Variables expliquées avec des exemples

Comment utiliser la commande echo dans les scripts Bash sous Linux

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

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

Comment utiliser Linux Bash Shell dans Windows 10 ?