Post by Sandro kensanFunction f(var $a,$b) {
$a=$b+1;
$b=0;
}
$c=7;
$d=8;
f($c,$d);
echo $c $d;
l'echo restituisce 9 0
Se capisco bene, stai cercando la soluzione ad un problema
di questo tipo: tu vuoi passare alla funzione alcuni valori
indicati da variabili (cioè da parametri) di volta in volta
*diverse* (cioè con diversi *nomi*). Vuoi che la funzione
modifichi questi valori, e li riassegni proprio alle variabili
con quei rispettivi *nomi*. È così?
Per esempio:
***@biggy:/tmp$ pippo=1; pluto=13; paperino=144
***@biggy:/tmp$ f() { export -n "$1"=$(($1+50)); export -n "$2"=$(($2+500)); }
Usi export, e non declare, perché declare, chiamato dentro a una
funzione, genererebbe variabili locali alla funzione
Questa funzione aumenta di 50 il valore della prima variabile
passata per riferimento (qui il riferimento è il nome della
variabile), di 500 il valore della seconda variabile passata
per riferimento.
***@biggy:/tmp$ f pippo paperino
Nota che qui chiamo la funzione dandole in pasto i meri
*nomi* delle variabili (i riferimenti): ci pensa poi la funzione
a richiamare i valori attribuiti alle variabili aventi quei nomi:
nella qual cosa non ci sono problemi, siccome le funzioni vengono
eseguite nella medesima shell in cui sono chiamate (e non in
subshell).
***@biggy:/tmp$ echo "$pippo $pluto $paperino"
51 13 644
***@biggy:/tmp$ f pippo pluto
***@biggy:/tmp$ echo "$pippo $pluto $paperino"
101 513 644
***@biggy:/tmp$ f pluto paperino
***@biggy:/tmp$ echo "$pippo $pluto $paperino"
101 563 1144
--
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
http://www.worldcommunitygrid.org/index.jsp
http://www.rnaworld.de/rnaworld/ http://home.edges-grid.eu/home/
http://www.gpugrid.net/