Shell-Prog - Variable erzeugen [edit]

Hallo allerseits,

ich habe aus folgendem Thread http://www.hackerboard.de/thread.php?threadid=26209 eine ähnliche Fragestellung gefunden.

Mein Problem konnte dadurch leider nicht ganz gelöst werden, darum hoffe ich auf ein wenig Unterstützung.

Ausgangslage:

param01=`cat paraliste` # in der Datei steht die Zahl 101
param101="Test"

Problem:

Im weiteren Scriptverlauf soll mit dem Inhalt der Variablen param101 gearbeitet werden.
Da es aber auch mal param102, param103 ... sein kann, soll diese Variable dynamisch erzeugt werden.

Lösung:

eval "echo \$param$param01" bringt zur Anzeige: Test

Der Befehl
eval "ergebnis=\$param$param01" sollte eigentlich bei
echo $ergebnis
die Anzeige Test bringen.

Aber es kommt: bad substitution in line ...

Ich habe alle möglichen Kombinationen von Klammern, Anführungszeichen etc. versucht, aber das erhoffte Resultat nie erzielt.

Linux-Version: Debian 3.1, neu installiertes System

Danke für einen hilfreichen Tipp !

Mike

/edit:

sorry, ich habe den zweiten Teil der Frage vergessen:

wie kann ich erreichen, dass geänderte Werte wieder auf die Varbiable zurückgegeben werden können, z.B.

neuwert="Gelungen"
echo $param101 --> Gelungen, wobei der Name der Variablen unbekannt ist.

also die Umkehrfunktion zu obigen Problem:
param???=<NeuerWert>
 
Code:
$ param01=101
$ param101="test"

$ ergebnis=$(eval "echo \$param$param01")
$ echo $ergebnis
test

$ neuwert="gelungen"
$ eval "param$param01=$neuwert"

$ ergebnis=$(eval "echo \$param$param01")
$ echo $ergebnis
 
Hallo,

vielen Dank - das funktioniert.
Und auch der "bad substitution"-Fehler kommt nicht hoch.

Wobei von der Syntax die o.g. Lösung hätte gehen sollen - aber vielleicht ist Debian ja da etwas genauer als SuSe.

Merci !
Mike
 
Zurück
Oben