Wie komme ich an den Inhalt des Inhalts einer Variable?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von topo, 19.02.2016.

  1. topo

    topo Grünschnabel

    Dabei seit:
    30.10.2013
    Beiträge:
    5
    Zustimmungen:
    0
    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
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    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.
     
  4. topo

    topo Grünschnabel

    Dabei seit:
    30.10.2013
    Beiträge:
    5
    Zustimmungen:
    0
    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 :-).
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    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
     
  6. topo

    topo Grünschnabel

    Dabei seit:
    30.10.2013
    Beiträge:
    5
    Zustimmungen:
    0
    Du bist super! Tut mir Leid, bin auf dem Schlauch gestanden. Mit eval bekomme ich es hin:
    Danke für Deine Hilfe :respekt:.
     
Thema:

Wie komme ich an den Inhalt des Inhalts einer Variable?

Die Seite wird geladen...

Wie komme ich an den Inhalt des Inhalts einer Variable? - Ähnliche Themen

  1. Dronecode-Projekt bringt kommerzielle Drohnenanwendungen voran

    Dronecode-Projekt bringt kommerzielle Drohnenanwendungen voran: Das vor über einem Jahr gegründete Dronecode-Projekt zählt jetzt 51 Mitglieder und und verstärkt seine Bemühungen um eine einheitliche Plattform...
  2. Android 6.0 ab kommender Woche verfügbar

    Android 6.0 ab kommender Woche verfügbar: Google hat die Freigabe der kommenden Android-Version 6.0 »Marshmallow« für die kommende Woche angekündigt. Zu den Geräten, die die Aktualisierung...
  3. Frankreich will Einkommenssteuersoftware im Quellcode veröffentlichen

    Frankreich will Einkommenssteuersoftware im Quellcode veröffentlichen: Das französische Finanzamt will, wenn auch nur zögerlich, den Quellcode einer Software zur Einkommenssteuerberechnung veröffentlichen. Unklar...
  4. Microsoft und Qisda unterzeichnen Patentabkommen

    Microsoft und Qisda unterzeichnen Patentabkommen: Microsoft hat ein weiteres Patentabkommen abschließen können: Nach diversen Herstellern bittet das Unternehmen nun auch die aus BenQ...
  5. RenderMan wird kostenlos für nichtkommerzielle Nutzer

    RenderMan wird kostenlos für nichtkommerzielle Nutzer: Pixar hat seine mit diversen Preise ausgezeichnete Rendering-Suide »RenderMan« allen nichtkommerziellen Nutzern kostenlos zur Verfügung gestellt....