Discussion:
Falsche Substitution
(zu alt für eine Antwort)
Jan Novak
2019-11-04 13:33:16 UTC
Permalink
Hallo,

gegeben sind in einem bash script z.B. folgende Variablen


PB+=("123456 whatever")
PB+=("7890abdef bla blum blub")

XC+=("xxxx 123456 whatever")
XC+=("yyyy 7890abdef bla blum blub")



per cli wird ein Parameter übergeben, welcher z.B. PB oder XC lautet.

hn=$1
KEYS=("${$hn[@]}")

oder andere Formen brachten kein Ergebnis. Ich brauche das Array in der
Variable KEYS, welches dem per Parameter übergebenen Wert entspricht.

Also $KEYS sollte dann zum Beispiel das Array von PB beinhalten.

Jan
Christian Schweingruber
2019-11-05 08:18:52 UTC
Permalink
Post by Jan Novak
Hallo,
gegeben sind in einem bash script z.B. folgende Variablen
PB+=("123456 whatever")
PB+=("7890abdef bla blum blub")
XC+=("xxxx 123456 whatever")
XC+=("yyyy 7890abdef bla blum blub")
per cli wird ein Parameter übergeben, welcher z.B. PB oder XC lautet.
hn=$1
wie wäre es mit simpler indirection:
KEYS=${!hn}

c> XC+=("xxxx 123456 whatever")
c> hn=XC
c> KEYS=${!hn}
c> echo $KEYS
xxxx 123456 whatever

vg Chrigu
Post by Jan Novak
oder andere Formen brachten kein Ergebnis. Ich brauche das Array in der Variable KEYS, welches dem per Parameter
übergebenen Wert entspricht.
Also $KEYS sollte dann zum Beispiel das Array von PB beinhalten.
Jan
Jan Novak
2019-11-05 14:43:32 UTC
Permalink
Post by Christian Schweingruber
Post by Jan Novak
Hallo,
gegeben sind in einem bash script z.B. folgende Variablen
PB+=("123456 whatever")
PB+=("7890abdef bla blum blub")
XC+=("xxxx 123456 whatever")
XC+=("yyyy 7890abdef bla blum blub")
per cli wird ein Parameter übergeben, welcher z.B. PB oder XC lautet.
hn=$1
KEYS=${!hn}
c> XC+=("xxxx 123456 whatever")
c> hn=XC
c> KEYS=${!hn}
c> echo $KEYS
xxxx 123456 whatever
Hallo Christian

ein ! war mir bis dato völlig unbekannt in diesem Zusammenhang.

Danke.


Jan
Jan Novak
2019-11-06 09:30:58 UTC
Permalink
Post by Christian Schweingruber
Post by Jan Novak
Hallo,
gegeben sind in einem bash script z.B. folgende Variablen
PB+=("123456 whatever")
PB+=("7890abdef bla blum blub")
XC+=("xxxx 123456 whatever")
XC+=("yyyy 7890abdef bla blum blub")
per cli wird ein Parameter übergeben, welcher z.B. PB oder XC lautet.
hn=$1
KEYS=${!hn}
c> XC+=("xxxx 123456 whatever")
c> hn=XC
c> KEYS=${!hn}
c> echo $KEYS
xxxx 123456 whatever
Habe es erst jetzt probieren können.
Genau wie in deiner Ausgabe, zeigt das
"echo $KEYS" nur den ersten Eintrag aus z.B. dem PB oder XC Array aber
nicht alle.


Jan
Christian Schweingruber
2019-11-07 13:51:18 UTC
Permalink
Post by Jan Novak
Post by Christian Schweingruber
Post by Jan Novak
Hallo,
gegeben sind in einem bash script z.B. folgende Variablen
PB+=("123456 whatever")
PB+=("7890abdef bla blum blub")
XC+=("xxxx 123456 whatever")
XC+=("yyyy 7890abdef bla blum blub")
per cli wird ein Parameter übergeben, welcher z.B. PB oder XC lautet.
hn=$1
KEYS=${!hn}
c> XC+=("xxxx 123456 whatever")
c> hn=XC
c> KEYS=${!hn}
c> echo $KEYS
xxxx 123456 whatever
Habe es erst jetzt probieren können.
Genau wie in deiner Ausgabe, zeigt das
"echo $KEYS" nur den ersten Eintrag aus z.B. dem PB oder XC Array aber nicht alle.
ok, dann noch eine Hilfsvariable:

c>XC+=("xxxx 123456 whatever")
c>XC+=("yyyy 7890abdef bla blum blub")
c>hn=XC
c>hnarr=${hn}[@]
c>KEYS=${!hnarr}
c>echo ${KEYS[@]}
c>echo ${KEYS[0]}
c>echo ${KEYS[1]}
xxxx 123456 whatever yyyy 7890abdef bla blum blub
xxxx 123456 whatever yyyy
7890abdef bla blum blub

vg Chrigu
Post by Jan Novak
Jan
Loading...