Variablen in Funktionen schützen

25/11/2010 - 18:02 von Torsten Fleischmann | Report spam
Hi,

gibt es eine Möglichkeit bei Funktionen die Variablen des Aufrufenden
vor Änderungen zu schützen. Ist natürlich besonders Interessant wenn
Funktionen rekursiv aufgerufen werden, aber auch sonst recht nützlich.

Mal ein Beispiel:

,-
| ff() { echo -n $((i++))$((i++)); }
| echo -n $((i++))$((i++))
| ff
| echo $((i++))$((i++))
`-

Ergibt hier (bash oder zsh)
012345

Tja und hier würde ich wenigstens
010123 als Ergebniss Bevorzugen...

Noch lieber wàre mir aber
012323 (Die Funktion kennt den Wert von i und kann ihn Intern auch
àndern)



Tschüß,

Torsten
 

Lesen sie die antworten

#1 Paul Hink
25/11/2010 - 18:17 | Warnen spam
Torsten Fleischmann wrote:

gibt es eine Möglichkeit bei Funktionen die Variablen des Aufrufenden
vor Änderungen zu schützen. Ist natürlich besonders Interessant wenn
Funktionen rekursiv aufgerufen werden, aber auch sonst recht
nützlich.

Mal ein Beispiel:

,-
| ff() { echo -n $((i++))$((i++)); }
| echo -n $((i++))$((i++))
| ff
| echo $((i++))$((i++))
`-

Ergibt hier (bash oder zsh)
012345

Tja und hier würde ich wenigstens
010123 als Ergebniss Bevorzugen...



Z.B.:

local i

als erster Befehl in der Funktion ff() (vielleicht bash-spezifisch).

Noch lieber wàre mir aber
012323 (Die Funktion kennt den Wert von i und kann ihn Intern auch
àndern)



Z.B.:

local i="$i"

als erster Befehl in der Funktion ff() (dito).

Ähnliche fragen