Bash Ambito dinamico in azione


Esempio

Ambito dinamico significa che le ricerche variabili si verificano nell'ambito in cui viene chiamata una funzione, non dove è definita .

$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3

In un linguaggio con ambito lessicale, func1 cercherà sempre l'ambito globale per il valore di x , perché func1 è definito nell'ambito locale.

In un linguaggio con ambito dinamico, func1 ricerca l'ambito in cui viene chiamato . Quando viene richiamato da func2 , per prima cosa appare nel corpo di func2 per un valore di x . Se non fosse definito lì, cercherebbe nell'ambito globale, da cui func2 stato chiamato func2 .