Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Variables locales

Dans les scripts que nous avons écrits jusqu'à présent, toutes les variables (y compris les constantes) ont été variables globales. Les variables globales conservent leur existence tout au long du programme. C'est bien pour beaucoup de choses, mais cela peut parfois compliquer l'utilisation des fonctions du shell. A l'intérieur des fonctions shell, il est souvent souhaitable d'avoir variables locales. Les variables locales ne sont accessibles que dans la fonction shell dans laquelle elles sont définies et cessent d'exister une fois la fonction shell terminée.

Le fait d'avoir des variables locales permet au programmeur d'utiliser des variables avec des noms qui peuvent déjà exister, soit dans le script globalement, soit dans d'autres fonctions du shell, sans avoir à se soucier des conflits de noms potentiels.

image

Voici un exemple de script qui montre comment les variables locales sont définies et utilisées :


#! / Bin / bash


# local-vars : script pour démontrer les variables locales

#! / Bin / bash


# local-vars : script pour démontrer les variables locales


truc=0

# variable globale foo

truc=0


fonction_1 () {

local foo # variable foo locale à funct_1 foo=1

echo "funct_1 : foo = $foo"

}


fonction_2 () {

local foo # variable foo locale à funct_2 foo=2

echo "funct_2 : foo = $foo"

}


echo "global : foo = $foo" funct_1

fonction_1 () {

local foo # variable foo locale à funct_1 foo=1

echo "funct_1 : foo = $foo"

}


fonction_2 () {

local foo # variable foo locale à funct_2 foo=2

echo "funct_2 : foo = $foo"

}


echo "global : foo = $foo" funct_1

Variables locales


echo "global : foo = $foo" funct_2

echo "global : foo = $foo"

echo "global : foo = $foo" funct_2

echo "global : foo = $foo"


Comme on peut le voir, les variables locales sont définies en faisant précéder le nom de la variable du mot locales. Cela crée une variable locale à la fonction shell dans laquelle elle est définie. Une fois en dehors de la fonction shell, la variable n'existe plus. Lorsque nous exécutons ce script, nous voyons les résultats :



[moi@linuxbox ~]$ vars-locales

global : foo = 0 funct_1 : foo = 1 global : foo = 0 funct_2 : foo = 2 global : foo = 0

[moi@linuxbox ~]$ vars-locales

global : foo = 0 funct_1 : foo = 1 global : foo = 0 funct_2 : foo = 2 global : foo = 0


On voit que l'affectation des valeurs à la variable locale foo dans les deux fonctions shell n'a aucun effet sur la valeur de foo défini en dehors des fonctions.

Cette fonctionnalité permet d'écrire des fonctions shell afin qu'elles restent indépendantes les unes des autres et du script dans lequel elles apparaissent. C'est très utile, car cela permet d'éviter qu'une partie d'un programme n'interfère avec une autre. Il permet également d'écrire des fonctions shell afin qu'elles puissent être portables. C'est-à-dire qu'ils peuvent être coupés et collés d'un script à l'autre, selon les besoins.


Meilleur système d'exploitation Cloud Computing chez OnWorks :