Ennio Sr scrisse in data 19/09/2010 16:21:
> 2010/9/19 Paolo Sala <piv...@riminilug.it>:
>   
>> È nello scoprire questo
>>     
> cosa eattamente? (che con 'test' la funzione restituisce il valore che
> le è sato assegnato quando l'hai definita, mentre con '$test'
> restituisce un novo valore di 'var', se nel frattempo hai ri-definito
> 'var' stessa?)
>   
Perché parli di ridefinire? Semplicemente nello scoprire che se chiami
una funzione con $ allora viene evocata una subshell che fa una _copia_
delle variabili d'ambiente e quindi che eventuali modifiche rimangono
soltanto all'interno di quella subshell. Per voi sarà banale e scontato
ma io proprio non lo sapevo e ne sono sorpreso.

> Spero che altri ti possano chiarire meglio questi concetti (ma dove li
> hai letti, in 'man bash'?)
> (Per me le variabili di ambiente sono quelle definite in .bashrc o
> .bash_profile....)
>   
Bhé AFAIK per una funzione che siano definiti in .bashrc o all'interno
della funzione stessa poco importa: con printenv vengono mostrate tutte
le variabili e il loro contenuto attive in quel momento,
indipendentemente che siano definite in .bashrc o nella funzione stessa
e che formano l'ambiente in cui il tuo script gira. Poi se vuoi
chiamarle in un altro modo ci possiamo mettere d'accordo...

> [...]
> Ma sto divagando e forse nn ci combina niente con cio' che hai in mente ;)
>   
A me piacerebbe fare in modo che le modifiche fatte ad una variabile
globale possano modificare la variabile globale indipendente dal modo in
cui questa funzione venga chiamata ma ho scoperto e mi sembra
confermiate che questo non è possibile. E questo a me serviva per
supplire la carenza di bash di non poter passare le variabili by reference.

Ringrazio tutti per le risposte che mi hanno aiutato a chiarire meglio
questo aspetto di bash (la creazione di una subshell ad ogni chimata di
una funzione con $) che non conoscevo.

Ciao

Piviul


-- 
Per REVOCARE l'iscrizione alla lista, inviare un email a 
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4c970a16.8020...@riminilug.it

Rispondere a