2016-12-05 1 views
2

Ich habe folgendes Szenario.Abrufen von Wert einer Variablen in der Shell

#!/bin/bash 
export avalue_name="stack" 
LOOPERS=${LOOPERS:-avalue} 
for LOOPER in $(echo "$LOOPERS" | tr ',' "\n") 
do 
    actualVar="$LOOPER""_name" 
    echo "actualVar - $actualVar" 
done 

Ausgang ist

actualVar - avalue_name 

ich die Ausgabe

actualVar - stack 

Wie würde ich es tun sein?

Ich versuchte $($LOOPER_name). Es funktioniert auch nicht.

+1

Wo deklarieren Sie '$ LOOPER_name'? Bitte werfen Sie einen Blick auf: http://www.shellcheck.net/ – Cyrus

+0

Ich habe das betreffende Skript aktualisiert. – sattu

Antwort

3

zwei Ansätze:


eine Zwischengröße verwenden, und Shell indirekten Verweis auf die Verwendung:

$ avalue_name="stack" 

$ LOOPER=avalue 

$ temp="${LOOPER}_name" 

$ echo "${!temp}" 
stack 

Oder eval verwenden, nicht empfohlen:

$ eval echo "\$${LOOPER}_name" 
stack 

Punkte:

  • _ ist ein gültiger variable Bestandteil Charakter, also, während eine Variable beziehen Sie es mit {}, wenn einem anderen gültigen variable Bestandteil Zeichen unmittelbar vor oder nach dem es umschließen müssen

  • Wenn nicht unbedingt erforderlich, verwenden Sie nicht alle Großbuchstaben für benutzerdefinierte Variablen, um eine Verwechslung mit den Umgebungsvariablen zu vermeiden.

Verwandte Themen