Hallo Zusammen,
zunächst hoffe ich dass ihr mich Neuling willkommen heißt und ich hier die "Erlösung" finde.
Ich habe ein Problem durch eine Lokalvariable welche meine Globalvariable überschreibt. Zwecks Anschauung folgende Skript-Skizze:
Bei Ausführung mit
Code:
erhalte ich das gewünschte Ergebnis:
Bei Ausführung mit
erhalte ich das ungewünschte Ergebnis:
Es muss aber in ksh funktionieren. Kann mir Jemand von euch bitte weiterhelfen? Es muss doch möglich sein auch unter Linux eine lokale Variable zu definieren, die nicht eine gleichnamige Globalvaribale überschreibt? Die Definition mit der Variable innerhalb der Funktion mit "local" hat leider nicht funktioniert.
Ganz wichtig: Ich nutze übrigens folgende ksh-Version:
Die Skripte liefen vorher unter AIX 6.1 TL08 SP02 in folgender ksh-Version:
Die bestehenden Skripte sollen mit so wenig Anpassungen wie möglich von AIX-ksh nach Linux-ksh migriert werden, müssen deshalb weiter unter ksh laufen.
Vielen Dank für jeden noch so kleinen aber hilreichen Rat
zunächst hoffe ich dass ihr mich Neuling willkommen heißt und ich hier die "Erlösung" finde.
Ich habe ein Problem durch eine Lokalvariable welche meine Globalvariable überschreibt. Zwecks Anschauung folgende Skript-Skizze:
Code:
# LocalVar.sh
test_loc_var()
{
typeset -t var
var=Lokalvariable
echo "var = $var"
}
typeset var=Globalvariable
echo "var = $var"
test_loc_var
echo "var = $var"
Bei Ausführung mit
Code:
Code:
bash /bin/bash LocalVar.sh
erhalte ich das gewünschte Ergebnis:
Code:
var = Globalvariable
var = Lokalvariable
var = Globalvariable
Bei Ausführung mit
Code:
ksh /bin/ksh LocalVar.sh
erhalte ich das ungewünschte Ergebnis:
Code:
var = Globalvariable
var = Lokalvariable
var = Lokalvariable
Es muss aber in ksh funktionieren. Kann mir Jemand von euch bitte weiterhelfen? Es muss doch möglich sein auch unter Linux eine lokale Variable zu definieren, die nicht eine gleichnamige Globalvaribale überschreibt? Die Definition mit der Variable innerhalb der Funktion mit "local" hat leider nicht funktioniert.
Ganz wichtig: Ich nutze übrigens folgende ksh-Version:
Code:
$ rpm -qa | grep -i ksh
ksh-93s-59.11.35
Die Skripte liefen vorher unter AIX 6.1 TL08 SP02 in folgender ksh-Version:
Code:
$ lslpp -l | grep -i ksh
bos.rte.shell 6.1.8.15 APPLIED Shells (bsh, ksh, csh)
Die bestehenden Skripte sollen mit so wenig Anpassungen wie möglich von AIX-ksh nach Linux-ksh migriert werden, müssen deshalb weiter unter ksh laufen.
Vielen Dank für jeden noch so kleinen aber hilreichen Rat