Variablen unter Shell-Script
Stokker
- programmiertechnik
0 Wirowax
Ich habe ein Problem, dass hoffentlich jemand lösen kann.
Ich habe eine Variable definiert, die die Namen von mehreren Variablen enthält (getrennt durch Leerzeichen). Jetzt möchte ich in einer Schleife einer Funktion die Inhalte all dieser Variablen ausgeben:
VARS="VARIABLE1 VARIABLE2 VARIABLE2"
VARIABLE1="Text1"
VARIABLE2="Wert2"
VARIABLE3="URL3"
function show_variables
{
while [ ! -z "$1" ] ; do
echo ${$1}
shift
done
}
show_variables VARS
So funktioniert das ganze natürlich nicht. Wie muss ich nach dem echo die Referenz angeben?
Stokker
Ich habe ein Problem, dass hoffentlich jemand lösen kann.
Ich habe eine Variable definiert, die die Namen von mehreren Variablen enthält (getrennt durch Leerzeichen). Jetzt möchte ich in einer Schleife einer Funktion die Inhalte all dieser Variablen ausgeben:
VARS="VARIABLE1 VARIABLE2 VARIABLE2"
VARIABLE1="Text1"
VARIABLE2="Wert2"
VARIABLE3="URL3"function show_variables
{
while [ ! -z "$1" ] ; do
echo ${$1}
shift
done
}show_variables VARS
So funktioniert das ganze natürlich nicht. Wie muss ich nach dem echo die Referenz angeben?
Stokker
Hi Stokker,
erstmal zum Funktionsaufruf...
show_variables $VARS bewirkt bei der Übergabe $1=VARIABLE1; $2=VARIABLE2; $3=VARIABLE3;
show_variables "$VARS" bewirkt bei der Übergabe $1="VARIABLE1 VARIABLE2 VARIABLE3"
jetz mal das Beispiel mit "$VARS":
--- snip ---
#!/bin/bash
VARS="VARIABLE1 VARIABLE2 VARIABLE3"
VARIABLE1="Text1"
VARIABLE2="Wert2"
VARIABLE3="URL3"
function show_variables
{
for i in $1; do
eval TEMPVAR=${$i}
echo $TEMPVAR
done
}
show_variables "$VARS"
--- snap ---
Bei der Ausgabe musst du (meines Wissens) den Umweg über eine "Hilfsvariable" gehen... dies macht man mit eval...
Falls es auch anders geht lasse ich mich gerne eines besseren belehren ;-)
Gruss, Wirowax