Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Variabili locali

Negli script che abbiamo scritto finora, tutte le variabili (incluse le costanti) sono state variabili globaliLe variabili globali mantengono la loro esistenza per tutto il programma. Questo è utile per molte cose, ma a volte può complicare l'uso delle funzioni shell. All'interno delle funzioni shell, è spesso auspicabile avere variabili localiLe variabili locali sono accessibili solo all'interno della funzione shell in cui sono definite e cessano di esistere una volta terminata la funzione shell.

Avere variabili locali consente al programmatore di utilizzare variabili con nomi che potrebbero già esistere, sia nello script a livello globale che in altre funzioni shell, senza doversi preoccupare di potenziali conflitti di nomi.

Immagine

Ecco uno script di esempio che dimostra come vengono definite e utilizzate le variabili locali:


#! / Bin / bash


# local-vars: script per dimostrare le variabili locali

#! / Bin / bash


# local-vars: script per dimostrare le variabili locali


pippo=0

# variabile globale foo

pippo=0


funzione_1 () {

foo locale # variabile foo locale a funct_1 foo=1

echo "funct_1: foo = $foo"

}


funzione_2 () {

foo locale # variabile foo locale a funct_2 foo=2

echo "funct_2: foo = $foo"

}


echo "globale: foo = $foo" funct_1

funzione_1 () {

foo locale # variabile foo locale a funct_1 foo=1

echo "funct_1: foo = $foo"

}


funzione_2 () {

foo locale # variabile foo locale a funct_2 foo=2

echo "funct_2: foo = $foo"

}


echo "globale: foo = $foo" funct_1

Variabili locali


echo "globale: foo = $foo" funct_2

echo "globale: foo = $foo"

echo "globale: foo = $foo" funct_2

echo "globale: foo = $foo"


Come possiamo vedere, le variabili locali sono definite anteponendo al nome della variabile la parola localeQuesto crea una variabile locale alla funzione shell in cui è definita. Una volta fuori dalla funzione shell, la variabile non esiste più. Quando eseguiamo questo script, vediamo i risultati:



[io@linuxbox~]$ variabili locali

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

[io@linuxbox~]$ variabili locali

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


Vediamo che l'assegnazione dei valori alla variabile locale foo all'interno di entrambe le funzioni shell non ha alcun effetto sul valore di foo definiti al di fuori delle funzioni.

Questa funzionalità consente di scrivere funzioni shell in modo che rimangano indipendenti l'una dall'altra e dallo script in cui compaiono. Questo è molto prezioso, poiché aiuta a impedire che una parte di un programma interferisca con un'altra. Permette inoltre di scrivere funzioni shell in modo che siano portabili. Vale a dire, possono essere tagliate e incollate da uno script all'altro, a seconda delle necessità.


Il miglior sistema operativo cloud computing su OnWorks: