Wie komme ich an den Inhalt des Inhalts einer Variable?

T

topo

Grünschnabel
Hallo Zusammen,

ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese extrahiere ich später unter Verwendung von Schlüsselworten in eine Datei. Die Datei besteht anschließend aus einer Liste von env-Variablen, die ich später benötige. Wenn ich mir nun die erste env-Variable aus der Liste hole und in eine Variable speichere, dann möchte ich später nicht den Inhalt der Variable, sondern wiederum deren Inhalt ausgeben. Wie kann ich dies tun?

Shell: Bash
Linux: ubuntu 3.5.0

Bsp:

# store all env variables to sort later the new variables
( set -o posix ; set ) > variables.before
VAR1=/tmp/build
VAR2=/home/workspace
VAR3=/tmp/test
# store all env variables to diff and get the important for this process
( set -o posix ; set ) > variables.after
# diff the env variables and store only the "new" one from this script
diff variables.before variables.after | grep SOURCE > variables.diff
# remove first two characters resulting from diff
sed 's .. ' variables.diff > variables.source
# remove all after '='
sed -i 's/=.*//' variables.source


Inhalt variables.source:
VAR1
VAR2
VAR3

Ich hole mir in meinem Skript die erste Variable aus der Datei. Hier in diesem Beispiel VAR1
line=$(head -n 1 variables.source)

und möchte den Inhalt von VAR1 ausgeben. Wie kann ich dies machen?
$ echo $line
VAR1


So etwas wie $($line) funktioniert nicht, jedenfalls nicht so wie ich es möchte. Wie komme ich über die Variable "line" an den Inhalt "/tmp/build"? Kann mir da jemand weiterhelfen?

Veilen Dank schon im Voraus für die Hilfe.

Grüße,
topo
 
Hm, das klingt für mich nach
* einem kranken Designfehler - warum sourced Du nicht einfach ein File mit den gewünschten Variablen samt Inhalt?
* wenn Du bei dem komischen Konzept bleiben willst - einem Job für
Code:
eval

... und dann mal noch http://www.tldp.org/LDP/abs/html/ivr.html lesen.
 
Ich habe es hier versucht einfach zu machen, damit es in ein Beispiel passt. In wirklichkeit sind es mehrere Skripte, die hier zusammenarbeiten. Na ja, ist es vielleicht auch ein kranker Designfehler, aber ich schreibe jetzt keine x Buildskripte um ;-).

Da habe ich schon vieles von probiert, funktioniert aber in meinem Fall nicht.

Trotzdem danke für Deine Infos :-).
 
dann beschreibe Deinen Fall doch mal genauer:
Code:
[marce@gandalf ~]$ cat t
var=test
[marce@gandalf ~]$ t2=$(cat t)
[marce@gandalf ~]$ echo $t2
var=test
[marce@gandalf ~]$ echo \$$t2
$var=test
[marce@gandalf ~]$ eval $t2
[marce@gandalf ~]$ echo $var
test
... einfacher wäre aber wie gesagt z.B. einfach ein
Code:
. ./t
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben