Ricerca…


introduzione

Per impostazione predefinita, ogni variabile in bash è globale per ogni funzione, script e anche la shell esterna se si dichiarano le variabili all'interno di uno script.

Se si desidera che la variabile sia locale a una funzione, è possibile utilizzare local per disporre di tale variabile una nuova variabile indipendente dall'ambito globale e il cui valore sarà accessibile solo all'interno di tale funzione.

Variabili globali

var="hello"

function foo(){
    echo $var
}

foo

Ovviamente uscirà "ciao", ma questo funziona anche nel contrario:

function foo()  {
    var="hello"
}

foo
echo $var

Uscirà anche "hello"

Variabili locali

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

foo
echo $var

Non produrrà nulla, dato che var è una variabile locale alla funzione foo, e il suo valore non è visibile al di fuori di esso.

Mescolando i due insieme

var="hello"

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

foo
echo "outside function, var=$var"

Uscirà

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow