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