PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ksh93: Lokalvariable überschreibt Globalvariable



Kölner2010
28-03-2013, 08:48
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:


# 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:


bash /bin/bash LocalVar.sh

erhalte ich das gewünschte Ergebnis:


var = Globalvariable
var = Lokalvariable
var = Globalvariable

Bei Ausführung mit


ksh /bin/ksh LocalVar.sh

erhalte ich das ungewünschte Ergebnis:


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:



$ rpm -qa | grep -i ksh
ksh-93s-59.11.35

Die Skripte liefen vorher unter AIX 6.1 TL08 SP02 in folgender ksh-Version:


$ 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 :)

Kölner2010
28-03-2013, 08:57
Kurz gefragt:

Wie kann man ungewünschte Überschreiben einer Globalvariable durch eine gleichnamige Lokalvariable in Linux-ksh verhindern?