Bash: Variablen deklarieren anhand Inhalt andere Variablen??

  • Hi,

    ich weiß das es irgendwie möglich ist, aber wie??

    In einer Variable steht ein Name. Es soll nun eine Vaiable deklariert werden mit genau diesem Namen der ich wiederrum einen Wert zuweisen kann.
    Beispiel:

    $Var1=VarName

    #Zuweisung, irgendwie: $$Var1=TestValue

    Ergebnis:
    echo $VarName
    --> TestValue

    Weiß jemand wie das geht oder hat einen entsprechenden Link parat??

    gruss
    Tobias

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

  • Code
    Var1=VarName
    eval $(echo $Var1=Testvalue) 
    echo $VarName
    myVdr


    HW1: Dign X15e, 2xDVB-S2 Nova-HD, 2 GB Ram, 2TB HDD, 1,5TB HDD, 300GB HDD, Intel Dualcore
    SW1: vdr4fun-0.0.2

    HW2: ExWBreu scenic600+LP064V-TFT, 1xDVB-S/2/T(wechselnd),2 GB Ram,250GB HDD, Intel-Celeron
    SW2: vdr4fun-0.0.3b

    Compile-HW: Intel Core i7 K875, 8 GB Ram, 2TB HDD

  • Darf ich mal fragen wofür das nützlich sein kann? Hab da gerade nichts vor Augen.

    Gruß
    Martin

    Hat mein Neffe abgestaubt:

    Gen2VDR auf Asus M2A-VM/Sempron LE-1100 mit TT-FF und Skystar2 in Thermaltake "Mozart"

    Aktuell: WIRD ERGÄNZT

  • Quote

    Original von uetzguer

    Code
    Var1=VarName
    eval $(echo $Var1=Testvalue) 
    echo $VarName

    Danke, das wars...

    Soetwas braucht man zb. wenn man SteuerVariablen und deren Inhalte in einer Datenbank definiert.

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

  • Man sollte sich aber darüber klar sein, dass das himmelweite Sicherheitslöcher reißt. Ein einfaches Var1="echo Hallo Welt;x" zeigt das Potenzial, von da zur Netzwerk-Shell ist es nicht weit.

    Genauso unsicher, aber wenigstens stilistisch sauber, ist die oben verlinkte Lösung:
    eval "$Var1=\$Value"

    Die dort auch vorgeschlagene read-Lösung motzt wenigstens:
    IFS= read -r "$Var1" <<< "Testvalue"

    Aber auch das Setzen von beliebigen Shell-Variablen ist nicht ganz ohne, da bieten sich viele Möglichkeiten, um bei passender Gelegenheit Code ausführen zu lassen, in dem die Shell ersetzt, der PATH manipuliert, oder ein PROMPT_COMMAND hinterlegt wird, etc. Eine solide Lösung sollte nur bekannte, vorgegebene Variablen übernehmen können:

    case "$Var1" in
    foo) foo="$Value";;
    bar) bar="$Value";;
    esac

    Gruß,

    Udo

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!