Поиск…


Вступление

По умолчанию каждая переменная в bash является глобальной для каждой функции, скрипта и даже внешней оболочки, если вы объявляете свои переменные внутри скрипта.

Если вы хотите, чтобы ваша переменная была локальной для функции, вы можете использовать local для этой переменной новую переменную, независимую от глобальной области и значение которой будет доступно только внутри этой функции.

Глобальные переменные

var="hello"

function foo(){
    echo $var
}

foo

Очевидно, будет выводиться «привет», но это тоже работает наоборот:

function foo()  {
    var="hello"
}

foo
echo $var

Будет также выводить "hello"

Местные переменные

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

foo
echo $var

Не будет выводить ничего, поскольку var является переменной, локальной для функции foo, и ее значение не видно из-за пределов.

Смешивание двух

var="hello"

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

foo
echo "outside function, var=$var"

Выйдет

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow