Wert eines Wertes einer Variablen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Tigertim
Beiträge: 3
Registriert: 15.10.2013 14:54:50

Wert eines Wertes einer Variablen

Beitrag von Tigertim » 15.10.2013 15:03:14

Hallo liebe Community,

ich bin Neuling auf dem Gebiet der Scripte.
Gerade bin ich dabei mir ein Script zu basteln welches die Funktion benötigt den Wert eines Wertes einer variablen auszugeben.
Als Beispiel:

#!/bin/bash
bla=name
blubb=bla
echo ${$blubb}

Das "echo" soll nun auf der Konsole "name" ausgeben.
Allerdings bekomme ich durch Modifikation der "echo"-Zeile entweder Fehlermeldungen oder "bla" auf der Konsole ausgegeben.
Gesucht habe ich nun schon ziemlich lange und selbst Script-User die ich persönlich kenne konnten mir bisher nicht helfen.

Könnt ihr mir vielleicht helfen?

Grüße!
Tigertim

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Wert eines Wertes einer Variablen

Beitrag von 4A4B » 15.10.2013 15:29:30

So sollte es gehen:

Code: Alles auswählen

echo ${!blubb}
PS: willkommen im Forum!

Tigertim
Beiträge: 3
Registriert: 15.10.2013 14:54:50

Re: Wert eines Wertes einer Variablen

Beitrag von Tigertim » 15.10.2013 18:03:03

Hallo 4A4B,
vielen Dank für deine Antwort!

Ich habe deinen Vorschlag folgendermaßen ausprobiert:

Code: Alles auswählen

#!/bin/bash
bla=name
blubb=bla
echo ${!blubb}
Leider hat dies nicht funktioniert.

Was ich zu Anfang noch vergessen hatte:
Ich benutze ein Debian 32 Bit (6.0.7) mit Linux-Kernel 2.6.32.

Danke für die freundliche Begrüßung :)

Radfahrer

Re: Wert eines Wertes einer Variablen

Beitrag von Radfahrer » 15.10.2013 18:11:32

Was heißt denn "Leider hat dies nicht funktioniert"?
Was passiert?
Fehlermeldung?
Was genau hast du gemacht?
Skript eingegeben und dann gespeichert, nehme ich mal an. Und auch ausführbar gemacht?
Und was passiert dann, wenn du es aufrufst?

Bei mir geht es:

Code: Alles auswählen

radfahrer@farnsworth:~$ ./blubb.sh
name
radfahrer@farnsworth:~$ 

Tigertim
Beiträge: 3
Registriert: 15.10.2013 14:54:50

Re: Wert eines Wertes einer Variablen

Beitrag von Tigertim » 15.10.2013 18:27:47

Okay, also mir ist direkt aufgefallen, dass ich meine Scripte anders ausführe.
Ich rufe meine Scripte mit "sh [name]" auf.

Code: Alles auswählen

tim@debian:~$ sh wert_eines_wertes
wert_eines_wertes: 4: Bad substitution
tim@debian:~$ 
Mit "./wert_eines_wertes.sh" hats funktioniert, vielen Dank!!!

Aber woran liegt das?

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Wert eines Wertes einer Variablen

Beitrag von 4A4B » 15.10.2013 18:52:05

Ich rufe meine Scripte mit "sh [name]" auf.
Dann wird das Script von /bin/sh ausgeführt, welches bei Debian auf die dash verweist, die im Vergleich zur bash in der Funktionalität eingeschränkt ist

Wenn du das Script direkt aufrufst, wird die Shell aus der Shebang-Zeile verwendet, in diesem Fall /bin/bash

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Wert eines Wertes einer Variablen

Beitrag von rendegast » 15.10.2013 19:37:45

4A4B hat geschrieben: echo ${!blubb}
bashism!

Posix-konform:

Code: Alles auswählen

eval echo \$$blubb
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Wert eines Wertes einer Variablen

Beitrag von 4A4B » 15.10.2013 19:57:56

rendegast hat geschrieben:
4A4B hat geschrieben: echo ${!blubb}
bashism!
Ja, da hast du recht - wobei ich allerdings bei einer Shebang-Zeile "#!/bin/bash" erst mal davon ausgehe, dass ein Bashism nicht unerwünscht ist :)

Wenn das Script portabel sein soll, ist deine Lösung mit eval aber natürlich vorzuziehen.

Antworten