variable expansion

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von jahsoldier, 10.05.2008.

  1. #1 jahsoldier, 10.05.2008
    jahsoldier

    jahsoldier Grünschnabel

    Dabei seit:
    12.01.2008
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,

    ich habe folgendes Problem. Ich habe eine mir vorher unbekannte Anzahl an Variablen der Form
    Code:
    VARIABLE_AA="Inhalt 1"
    VARIABLE_AB="Inhalt 2"
    VARIABLE_AC="Inhalt 3"
    ...
    
    Nun möchte ich von allen definierten Variablen den Inhalt auslesen und weiterverarbeiten. Habe dabei an folgendes gedacht:
    Code:
    for i in ${!VARIABLE_*}
    do
          var=$i
          ...
    done
    
    Hier wird der Variablen "var" aber nur der Name der Variablen "VARIABLE_*" zugewiesen, nicht aber deren Inhalt!

    Kennt jemand eine Möglichkeit, wie ich der Variable "var" den Inhalt der Variablen "VARIABLE_*" zuweisen kann? Oder gibt es für dieses Problem eine elegantere Lösung?

    Grüße
     
  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. #2 Gott_in_schwarz, 10.05.2008
    Zuletzt bearbeitet: 10.05.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    eval ist dein Freund:
    Code:
    VARIABLE_AA="Inhalt 1"
    VARIABLE_AB="Inhalt 2"
    VARIABLE_AC="Inhalt 3"
    for foo in VARIABLE_{A,B,C}{A,B,C}; do
        var=$(eval echo \$$(echo $foo))
        [ "$var" ] && echo $var
    done
    Zum besseren Verständnis schau dir auch mal die Ausgabe von
    Code:
    echo bla{x,y}{4,8}
    oder so an. (Damit wird die Variablen-Namen Liste erzeugt.)

    edit: So isses irgendwie übersichtlicher:
    Code:
    for foo in \$VARIABLE_{A,B,C}{A,B,C}; do
         var=$(eval echo $foo)
         [ "$var" ] && echo $var
    done
    Je nachdem, wieviele Möglichkeiten es gibt, kannst du auch über größere potentielle Variablennamen iterieren. Zum Beispiel eine Liste von VARIABLE_AA bis VARIABLE_ZZ:
    Code:
    echo VARIABLE_{A..Z}{A..Z}
    edit²: grade erst den Sinn des ${!VARIABLE*} erfasst. Dann könntest du deinen Loop so umgestalten:
    Code:
    for i in ${!VARIABLE_*}
    do
          var=$(eval echo \$$i)
          #...
    done
     
  4. #3 jahsoldier, 11.05.2008
    jahsoldier

    jahsoldier Grünschnabel

    Dabei seit:
    12.01.2008
    Beiträge:
    7
    Zustimmungen:
    0
    vielen dank,

    das funktioniert ausgezeichnet!

    Grüße
     
Thema:

variable expansion

Die Seite wird geladen...

variable expansion - Ähnliche Themen

  1. Variablenexpansionen kombinieren

    Variablenexpansionen kombinieren: Hallo, ich wollte die neue Variable "BEZ" erstellen, in dem ich von der Variable $NAME die Endung ".avi" entferne. Das scheint aber leider...
  2. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  3. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  4. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  5. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...