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 (comprese le costanti) sono state variabili globali. Le variabili globali mantengono la loro esistenza per tutto il programma. Questo va bene per molte cose, ma a volte può complicare l'uso delle funzioni della shell. All'interno delle funzioni della shell, è spesso desiderabile avere variabili locali. Le 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 permette al programmatore di usare variabili con nomi che possono già esistere, sia nello script globalmente che in altre funzioni della 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 () {

local foo # variabile foo locale a funct_1 foo=1

echo "funct_1: pippo = $pippo"

}


funzione_2 () {

local foo # variabile foo locale a funct_2 foo=2

echo "funct_2: pippo = $pippo"

}


echo "global: foo = $foo" funct_1

funzione_1 () {

local foo # variabile foo locale a funct_1 foo=1

echo "funct_1: pippo = $pippo"

}


funzione_2 () {

local foo # variabile foo locale a funct_2 foo=2

echo "funct_2: pippo = $pippo"

}


echo "global: foo = $foo" funct_1

Variabili locali


echo "global: foo = $foo" funct_2

echo "global: pippo = $pippo"

echo "global: foo = $foo" funct_2

echo "global: pippo = $pippo"


Come possiamo vedere, le variabili locali sono definite facendo precedere il nome della variabile dalla parola locale. Questo crea una variabile che è 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~]$ locale-vars

globale: pippo = 0 funzione_1: pippo = 1 globale: pippo = 0 funzione_2: pippo = 2 globale: pippo = 0

[io@linuxbox~]$ locale-vars

globale: pippo = 0 funzione_1: pippo = 1 globale: pippo = 0 funzione_2: pippo = 2 globale: pippo = 0


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

Questa caratteristica consente di scrivere le funzioni della shell in modo che rimangano indipendenti l'una dall'altra e dallo script in cui compaiono. Questo è molto prezioso, poiché aiuta a prevenire che una parte di un programma interferisca con un'altra. Consente inoltre di scrivere le funzioni della shell in modo che possano essere portabili. Cioè, possono essere tagliati e incollati da script a script, secondo necessità.


Il miglior sistema operativo cloud computing su OnWorks: