Hallo Welt,
ich habe ein Problem mit dem Werterhalt einer Variablen in einem Bash-Skript. Erst mal der Aufbau des Skripts:
>>
<pre>
#!/bin/bash
[...]
let -i COUNTER=0
[...]
funktion1 () {
Kommando --mach --was
let -i COUNTER=$COUNTER+1
echo "temp: $COUNTER"
}
[...]
while <Bedingung> ; do
funktion1
done
echo $COUNTER
exit
</pre>
<<
Das Problem ist, dass ich anhand des 1. echos zwar sehe, dass $COUNTER korrekt hochgezählt wird, aber in der eigendlichen Ausgabe des Zählers am Ende des Skripts wird immer "0" ausgegeben.
Wie kriege ich den "richtigen" $COUNTER-Wert angezeigt? Wär für jeden Hinweis, wo der Wald ist, dankbar...
Bash - Variablen - global/lokal
Bash - Variablen - global/lokal
Last edited by tuxrules on 10. Dec 2003 2:59, edited 1 time in total.
Re: Bash - Variablen - global/lokal
Hi,
ich tippe mal darauf, dass COUNTER in der Funktion lokal ist.
baue mal `return $COUNTER` am Ende der Funktion ein und rufe die Funktion mit `funktion1(COUNTER)` auf.
ratte
ich tippe mal darauf, dass COUNTER in der Funktion lokal ist.
baue mal `return $COUNTER` am Ende der Funktion ein und rufe die Funktion mit `funktion1(COUNTER)` auf.
ratte
Re: Bash - Variablen - global/lokal
*AnDieStirnPatsch*
Na klar, der Returnwert!
Vielen Dank, Ratte <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Na klar, der Returnwert!
Vielen Dank, Ratte <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Re: Bash - Variablen - global/lokal
...inzwischen durch Lesen der bash manpage dazugelernt:
functions in der Bash verhalten sich bei der Parameteruebergabe wie ein Script, d.h. die uebergebenen Variablen werden durch $1 usw. aufgeloest.
ratte
functions in der Bash verhalten sich bei der Parameteruebergabe wie ein Script, d.h. die uebergebenen Variablen werden durch $1 usw. aufgeloest.
ratte