2016-05-03 16 views
0

Wir müssen den Wert dynamisch konstruierter Variablen ermitteln.Variablenwert dynamisch aus String auswerten

Was ich meine ist, haben wir eine Variable aus einer Eigenschaft Datei namens data8967677878788node geladen. Wenn wir also echo $data8967677878788node ausführen, erhalten wir die Ausgabe .

Jetzt in data8967677878788node muss die Nummer Teil 8967677878788 dynamisch sein. Das heißt, es könnte Variablen wie

data1234node 
data346346367node 

und so sein.

Die Zahl ist ein Eingabeargument für das Skript. Also brauchen wir so etwas wie dieses auf

TESTVAR="data`echo $DATANUMBER`node" 
echo $$TESTVAR #This line gives the value "test" 

Jede Idee zu arbeiten, wie dies

erreicht werden kann

Antwort

3

Sie BASH die indirekte Variable Expansion verwenden:

data346346367node='test' 

myfunc() { 
    datanumber="$1" 
    var1="data${datanumber}node" 
    echo "${!var1}" 
} 

Und nennen Sie es wie:

myfunc 346346367 

Ausgabe:

test 
0

Ihr Code ist eigentlich schon ziemlich nah an Arbeit, es muss nur leicht modifiziert werden:

TESTVAR="data`echo $DATANUMBER`node" 
echo ${!TESTVAR} 

Wenn $DATANUMBER den Wert 12345 und $data12345node den Wert test dann das obige Snippet wird ausgegeben test.

Quelle: http://wiki.bash-hackers.org/syntax/pe#indirection