shell-programierung

Post Reply
Message
Author
alias_maya

shell-programierung

#1 Post by alias_maya »

Hi, Leute

Ich hab' zum Thema shell-programierung (bash) eine Frage:
Mein Script verwendet folgende Variablen:
DEVICE_1=eth0, DEVICE_2=eth1, DEVICE_3=eth2, usw. ...
Nun möchte ich den Inhalt einer dieser Variablen anhand ihrer Endnummer,
welche ebenfalls durch eine Variable definiert ist (zb:X=2) ausgeben lassen.
Ich hab's mit
echo "$DEVICE_$X"
versucht, aber die Ausgabe ist DEVICE_2 und nicht eth1.

Wäre toll, wenn mir jemand von Euch weiterhelfen könnte....

Gruß,

Jochen

Re: shell-programierung

#2 Post by Jochen »

Die Ersetzung einer Variablen durch ihren Inhalt wird von der Shell vorgenommen. Dies passiert aber eigentlich nur einmal. Um einen 2. Durchgang der Substitutionsmechanismen zu erzwingen, verwendet man "eval":
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
X=2
DEVICE_2=eth1
eval echo \$DEVICE_$X
</font><hr></pre></blockquote>
Der erste (normale) Durchgang ersetzt $X durch 2 und entfernt den Backslash, lässt das folgende $ dafür aber in Ruhe. Der zweite, durch eval erzwungene Durchgang ersetzt dann den Ergebnistext "$DEVICE_2" durch "eth1".

Du weisst aber auch, dass die bash(1) Array-Variablen beherrscht? Da musst Du Dir diese Mühe nicht machen. Such in der bash(1)-manpage nach "Arrays", da wirst Du schnell fündig.

Jochen

alias_maya

Re: shell-programierung

#3 Post by alias_maya »

Hi,

@Jochen
danke für Dein Posting, das Script funktioniert jetzt so, wie ich mir das vorgestellt habe.
Zum Thema Array-Variablen, ich hab noch nicht ganz durchschaut, wie es damit funktionieren könnte,
mag aber auch daran liegen, das mir punkto Programierung einige Basic's fehlen...

Gruß, Peter

Post Reply