On Thursday 02 October 2003 14:38, Andreas Kyek wrote:
On Thursday 02 October 2003 14:26, Andreas Kyek wrote:
On Thursday 02 October 2003 13:48, Al Bogner wrote:
Wie generiere ich eine dynamische Variable in der Art:
datei1=test i=1 datei=datei$i # also datei1
Nun hätte ich gerne, dass der Inhalt von datei aber nicht datei1 ist, sondern test.
z.B.
datei=$(eval echo \$datei$i) oder mit Backticks datei=`eval echo \$datei$i`
Korrektur: die zweite Variante geht bei mir doch nicht (hatte ich nicht ausprobiert). Warum eigentlich nicht? Ich dachte immer, $(...) und `...` sind äquivalent (OK; Backticks sind die alte Version der sh).
Verwirrt
Und nochmal ich (ich komme mir vor, als führe ich Selbstgespräche!): Ich habe noch ein bischen weiter geforscht. $(...) und `...` sind NICHT äquivalent. Schaut man sich mal genau an, was die bash da treibt: ------------------------------------------- linux:~> dat=`eval echo \\$datei$i` dat=`eval echo \\$datei$i` eval echo \$datei$i ++ eval echo '$datei1' echo $datei1 +++ echo test + dat=test ------------------------------------------- Die Variante funktioniert also. ------------------------------------------- linux:~> dat=`eval echo \$datei$i` dat=`eval echo \$datei$i` eval echo $datei$i ++ eval echo 1 echo 1 +++ echo 1 + dat=1 ------------------------------------------- Die funktioniert demnach nicht. ------------------------------------------- linux:~> dat=$(eval echo \$datei$i) dat=$(eval echo \$datei$i) eval echo \$datei$i ++ eval echo '$datei1' echo $datei1 +++ echo test + dat=test ------------------------------------------- Die hier funktioniert. Komischerweise braucht die Konstruktion mit $(...) einen Backslash weniger. Kann mir das jemand erklären? Andreas PS: AL, Du hast also zumindest zwei funktionieren Varianten!