Recherche…


Introduction

Par défaut, chaque variable dans bash est globale pour chaque fonction, script et même pour le shell externe si vous déclarez vos variables dans un script.

Si vous voulez que votre variable soit locale à une fonction, vous pouvez utiliser local pour que cette variable soit une nouvelle variable indépendante de la portée globale et dont la valeur ne sera accessible qu'à l'intérieur de cette fonction.

Variables globales

var="hello"

function foo(){
    echo $var
}

foo

Va évidemment sortir "bonjour", mais cela fonctionne aussi dans l'autre sens:

function foo()  {
    var="hello"
}

foo
echo $var

Va aussi sortir "hello"

Variables locales

function foo() {
    local var
    var="hello"
}

foo
echo $var

N'affichera rien, car var est une variable locale à la fonction foo, et sa valeur n'est pas visible de l'extérieur.

Mélanger les deux ensemble

var="hello"

function foo(){
    local var="sup?"
    echo "inside function, var=$var"
}

foo
echo "outside function, var=$var"

Va sortir

inside function, var=sup?
outside function, var=hello


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow