GNU/Linux >> Tutoriels Linux >  >> Linux

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

Cet article fait partie de notre série de tutoriels bash en cours. Comme tous les autres langages de programmation, Bash fournit également des variables.

Les variables bash fournissent un stockage temporaire des informations qui seront nécessaires pendant la durée de vie du programme.

Syntaxe :

VARNAME=VALUE

Remarque : Il ne doit pas y avoir d'espace autour du signe "=" dans l'affectation des variables. Lorsque vous utilisez VAR=VALUE, le shell voit le "=" comme un symbole et traite la commande comme une affectation de variable. Lorsque vous utilisez VAR =VALUE, le shell suppose que VAR doit être le nom d'une commande et essaie de l'exécuter.

Shell ne se soucie pas du type de variables. Les variables peuvent stocker des chaînes, des entiers ou des nombres réels.

Exemple.1 Utilisation d'une affectation de variable Bash simple

Le script suivant crée une variable appelée LIST et attribue la valeur "/var/opt/bin". Pour accéder aux variables, préfixez simplement le nom de la variable avec $, ce qui vous donnera la valeur stockée dans cette variable.

$ cat sample.sh
#!/bin/bash
LIST="/var/opt/bin/"
ls -l $LIST

Exécutez le script ci-dessus, qui listera /var/opt/bin au format long comme indiqué ci-dessous.

$ ./sample.sh
total 8
drwxrwsr-x 2 bin  bin 4096 Jan 29 06:43 softwares
drwxr-sr-x 5 root bin 4096 Sep  2  2009 llist

Portée de la variable bash :locale et globale

Dans Bash, les variables n'ont pas besoin d'être déclarées. Mais, lorsque vous accédez à la variable qui n'est pas utilisée jusqu'à présent, vous n'obtiendrez aucun message d'avertissement ou d'erreur. Au lieu de cela, il affichera une valeur vide.

Exemple 2. Valeurs vides dans les variables bash

$ cat var1.sh
#!/bin/sh
echo "Variable value is: $VAR1"
VAR1="GEEKSTUFF"
echo "Variable value is: $VAR1"

$ ./var1.sh
Variable value is:
Variable value is: GEEKSTUFF

Comme indiqué ci-dessus, initialement la variable aura une valeur vide, après l'affectation, vous pouvez obtenir vos valeurs. La commande export est utilisée pour exporter une variable depuis un shell interactif. l'exportation montre l'effet sur la portée des variables.

Exemple 3. Variables Bash sans exportation

Attribuez une variable avec une valeur dans un shell interactif et essayez d'y accéder dans votre script shell.

$ VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

Maintenant, exécutez le script ci-dessus comme indiqué ci-dessous.

$ ./var2.sh
VAR2=
VAR2=UNIX

Vous obtiendrez toujours une valeur vide pour la variable VAR2. Le shell stocke la variable VAR2 avec LINUX uniquement dans le shell actuel. Lors de l'exécution de var2.sh, il génère le shell et exécute le script. Ainsi, la variable VAR2 n'aura pas la valeur dans le shell généré. Vous devez exporter la variable pour qu'elle soit héritée par un autre programme - y compris un script shell, comme indiqué ci-dessous.

Exemple 4. Exportation d'une variable Bash

$ export VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

Exécutez maintenant le script ci-dessus.

$ ./var2.sh
VAR2=LINUX
VAR2=UNIX
$
$echo $VAR2
LINUX

Maintenant, vous pouvez remarquer qu'après l'exécution du script shell var2.sh, la valeur de VAR2 est LINUX. Parce que les variables ne seront pas renvoyées à votre shell interactif, à moins que vous n'exécutiez le script dans le shell actuel.

Déclarer une variable bash

En utilisant l'instruction declare dans bash, nous pouvons limiter la valeur attribuée aux variables. Il restreint les propriétés des variables. L'option dans une instruction declare est utilisée pour déterminer le type d'une variable.

Syntaxe :

declare option variablename
  • declare est un mot clé
  • l'option pourrait être :
    • -r variable en lecture seule
    • -i variable entière
    • -une variable tableau
    • -f pour les fonctions
    • -x déclare et exporte vers les commandes suivantes via l'environnement.

Exemple 5. Déclaration d'une variable Bash à l'aide de declare

$ cat declar.sh
#!/bin/bash
declare -i intvar
intvar=123 # Assigning integer value.
echo $intvar
intvar=12.3 #Trying to store string type value to an integer variable
echo $intvar

declare -r rovar=281
rovar=212 # Trying to change the readonly variable.

À partir de l'exécution ci-dessous, vous pouvez remarquer le message d'erreur lorsque vous affectez des données non valides à une variable.

$ ./declar.sh
123
t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3")
123
t.sh: line 11: rovar: readonly variable

Variables globales de bash

Les variables globales sont également appelées variables d'environnement, qui seront disponibles pour tous les shells. La commande printenv est utilisée pour afficher toutes les variables d'environnement.

$ printenv
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/1
HOME=/root
LOGNAME=root
CVS_RSH=ssh

Variables de bash locales

Les variables locales ne sont visibles que dans le bloc de code. local est un mot clé utilisé pour déclarer les variables locales. Dans une fonction, une variable locale n'a de sens que dans ce bloc fonctionnel.

Exemple 6. Variables Bash globales et locales

$ cat localvar.sh
#!/bin/bash
pprint()
{
  local lvar="Local content"
  echo -e "Local variable value with in the function"
  echo $lvar
  gvar="Global content changed"
  echo -e "Global variable value with in the function"
  echo $gvar
}

gvar="Global content"
echo -e "Global variable value before calling function"
echo $gvar
echo -e "Local variable value before calling function"
echo $lvar
pprint
echo -e "Global variable value after calling function"
echo $gvar
echo -e "Local variable value after calling function"
echo $lvar

Exécutez le script ci-dessus,

$ sh t.sh
Global variable value before calling function
Global content
Local variable value before calling function

Local variable value with in the function
Local content
Global variable value with in the function
Global content changed
Global variable value after calling function
Global content changed
Local variable value after calling function

Dans la sortie ci-dessus, les variables locales n'auront qu'une valeur vide avant et après l'appel de la fonction. Sa portée est uniquement dans la fonction. Il a disparu de la fonction, alors que la variable globale a la valeur mise à jour même après l'exécution de la fonction.


Linux
  1. Bash For Loop Guide et exemples

  2. Tutoriel sur les commandes Linux nice et renice (7 exemples)

  3. Exemples de boucle Bash For et de boucle While

  4. Tutoriel sur l'état de sortie de Bash Shell avec des exemples pratiques

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

Bash For Loop avec des exemples pratiques

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

Bash Scripting - Variables expliquées avec des exemples

16 exemples pratiques et utiles de la commande Echo sous Linux

Tutoriel d'introduction aux scripts Bash avec 5 exemples pratiques

Tutoriel sur les fonctions Bash Shell avec 6 exemples pratiques