Hi Christian.

Ich habe das gerade mal versucht nachzuempfinden und bei mir schaut das so hier aus.
Zuerst einmal das Script an sich:
[EMAIL PROTECTED]:~/testordner$ cat test
#!/bin/bash
set -xv
a="test";
b=$a;
echo $b;
echo ${b};

a=(test tist tast tust);
b=$a;
echo [EMAIL PROTECTED];
[EMAIL PROTECTED];
echo [EMAIL PROTECTED];
[EMAIL PROTECTED]:~/testordner$


Führt man das aus, erhälst du die folgende Ausgabe (durch das "set -xv" am Anfang wird
es ein "kleinwenig" detailierter ;-)):
[EMAIL PROTECTED]:~/testordner$ ./test
a="test";
+ a=test
b=$a;
+ b=test
echo $b;
+ echo test
test
echo ${b};
+ echo test
test

a=(test tist tast tust);
+ a=(test tist tast tust)
b=$a;
+ b=test
echo [EMAIL PROTECTED];
+ echo test
test
[EMAIL PROTECTED];
+ b='test tist tast tust'
echo [EMAIL PROTECTED];
+ echo test tist tast tust
test tist tast tust
[EMAIL PROTECTED]:~/testordner$

Auf meinem Ubuntu 7.10 Zuhause funktioniert das nicht mittels ${!b}.
Allerdings ein ${b} an sich geht schon. Ich glaube, dein Denk-Fehler liegt darin, dass du nicht alle Argumente an b übergeben hast. Mag stimmmen, oder auch nicht, ich weiss das selbst nicht sooo genau, da ich kein "kleiner Brian" bin (der hat die Bash mitentwickelt, laut man-Page).


Zu dem ewigen rumgeheule, dass man doch einfach alles in Perl machen sollte, möchte ich mal noch ein paar Sätze loswerden ;-) Ich mag Perl nicht, da es nicht zwingend auf jeder Kiste zur Verfügung steht und unter Umständen von Kiste zu Kiste anders eingestellt sein kann - habe ähnlich Erfahrungen zumindest mit php gemacht und php eignet sich ja auch sehr gut für cli-Scripte (php-cli), daher die Erfahrung mittels php. Zudem muss man Perl erst "lernen", shell kann man (ich) schon recht gut. Deswegen ist das für mich z.B. ein Grund viele Sachen mit nem Shell(Bash)-Script zu machen, anstatt auf ner Kiste erstmal mühevoll Perl zu installieren (wenn ich denn root bin) und das dann auch noch zu warten, zu konfigurieren, und und und. Will nun nicht von meiner Position aus zurückweinen, aber wenn doch jemand nach ner Shell-Lösung fragt, warum bekommt er dann immer ne Perl-Antwort?



Sanfte Grüße,

Pe*der-zuviel-demolition-man-geguggt-hat*ter

Christian Schneider schrieb:
Hallo allerseits,

ich hätte mal eine Frage, vielleicht kann mir von euch ja jemand auf die Sprünge helfen. Es geht um http://www.tldp.org/LDP/abs/html/bashver2.html, Example 34-2. Indirect variable references - the new way

a=test
b=$a
echo ${!b} # --> test

Diese Geschichte funktioniert mit simplen Variablen wunderbar. Ich versuche jetzt schon den ganzen Tag genau das selbe mit Arrays und komme einfach nicht weiter. Wird das in Bash Version 3.1.17 noch nicht unterstützt?

a=(test tast tist tost tust)
b=$a
echo [EMAIL PROTECTED] # --> 0 ?? "Index 0" oder einfach null?

Eigentlich brauche ich variable Variablennamen oder Multidimensionale, Indizierte Arrays, aber auch damit sieht es ja mager aus... Ist Bash hier einfach die falsche Wahl oder stell ich mich irgendwie dämlich an? Hätte vielleicht jemand eine Tipp?


Vielen Dank im voraus und Grüße,
Christian

--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an