Szukaj…


Wprowadzenie

Domyślnie każda zmienna w bash jest globalna dla każdej funkcji, skryptu, a nawet zewnętrznej powłoki, jeśli deklarujesz swoje zmienne w skrypcie.

Jeśli chcesz, aby zmienna była lokalna dla funkcji, możesz użyć local aby ta zmienna była nową zmienną, która jest niezależna od zasięgu globalnego i której wartość będzie dostępna tylko wewnątrz tej funkcji.

Zmienne globalne

var="hello"

function foo(){
    echo $var
}

foo

Wyśle oczywiście „hello”, ale działa to również w drugą stronę:

function foo()  {
    var="hello"
}

foo
echo $var

Wyświetli również "hello"

Zmienne lokalne

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

foo
echo $var

Nic nie wyświetli, ponieważ var jest zmienną lokalną dla funkcji foo, a jej wartość nie jest widoczna z zewnątrz.

Mieszanie dwóch razem

var="hello"

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

foo
echo "outside function, var=$var"

Wyjdzie

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow