2016-03-30 21 views
0

zugeordnet Ich habe folgende Shell-Skript -Referenzgröße, den Wert aus einer anderen Variablen

AWSZONE="central" 
ENVIRONMENT="staging" 
REMOTE_HOSTS_central_staging="172.31.7.59,172.31.3.151 
NAME="REMOTE_HOSTS_${AWSZONE}_${ENVIRONMENT}" 
echo "Using following agents: ${NAME}" 

Bei der Ausführung I folgende Ausgabe -

Using following agents: REMOTE_HOSTS_central_staging 

Obwohl ich mag Ausgabe erhalten -

Using following agents: 172.31.7.59,172.31.3.151 

Was stimmt nicht mit meiner Syntax?

+0

eval „NAME bekannt ist = \ $ REMOTE_HOSTS _ $ {AWSZONE} _ $ {UMGEBUNG} " – Chris

+0

Mögliches Duplikat von [wie verwende ich den Wert einer Variablen als othe r Variable Name in bash] (http://stackoverflow.com/questions/9714902/how-to-use-a-variables-value-as-other-variables-name-in-bash) –

Antwort

2

Ändern Sie das Echo zu

echo "Using following agents: ${!NAME}" 

Und es sollte in Ordnung sein.

+0

funktioniert gut, gibt es a spezieller Name für die Verwendung des Negationssymbols vor dem Variablennamen? – Tarun

+0

Es heißt indirekte Erweiterung. Es wird in den bash Man Pages unter Parameter Expansion erwähnt :-) – LarsErik

1

Versuchen Sie folgendes:

AWSZONE="central" 
ENVIRONMENT="staging" 
REMOTE_HOSTS_central_staging="172.31.7.59,172.31.3.151" 
NAME="REMOTE_HOSTS_${AWSZONE}_${ENVIRONMENT}" 
eval "echo Using following agents: \$${NAME}" 

Ausgang:

Using following agents: 172.31.7.59,172.31.3.151 

Wenn Sie bash verwenden, können Sie auch @ LarsErik die Verwendung answer.It als Indirect Expansion

Verwandte Themen