judgedredd
Goto Top

Indirekte Variablen in der bash

Morsche Zusammen,

bin gerade dabei auf einer Linuxkiste ein Script zusammenzuklöppeln:
Vermutlich fehlt es mir bei dieser Anfängerfrage an persönlichem Wissen und würde daher um Eures bitten.

Script:
var1='hello ${var2}'  
var2='world'  
echo "${var1}"  

Als Ausgabe erhalte ich:
hello ${var2}

Ziel:
hello world

Meine Suche(n) diesbezüglich haben mich zu indirekten Variablen {!var1} und zu eval geleitet.
Mit beiden Varianten bin ich aber nicht erfolgreich gewesen.

Ist mein Vorhaben überhaupt grundsätzlich möglich oder komme ich nicht drumherum zuerst ${var2} zu deklarieren ?
Über eine Lösung wäre ich entzückt.

Gruß,
JudgeDredd

Content-ID: 82399572724

Url: https://administrator.de/forum/indirekte-variablen-in-der-bash-82399572724.html

Ausgedruckt am: 22.12.2024 um 11:12 Uhr

7907292512
Lösung 7907292512 24.10.2023 aktualisiert um 10:18:53 Uhr
Goto Top
var1='hello ${var2}'    
var2='world'  
# -------
# substitution direkt ausgeben
eval "echo \"$var1\""  
# oder Ergebnis wieder Variablen zuweisen
eval "ergebnis=\"$var1\""  
echo $ergebnis

Würde da aber eher ne Function für definieren dann die Template Variablen definieren und am Ende die Function aufrufen. Denn eval is evil ...
So wie hier beschrieben
https://unix.stackexchange.com/questions/60688/how-to-defer-variable-exp ...

Sid.
JudgeDredd
JudgeDredd 24.10.2023 um 11:54:21 Uhr
Goto Top
Hey Siddius,

perfekt, das klappt so wie ich es mit gewünscht hatte (auch das auslagern in eine function).
Im Prinzip war ich schon sehr nah dran face-wink
Bei meinen Funden und Versuchen, hat immer das escapen der quotes gefehlt und selbst bin ich da wohl nicht drauf gekommen.

vielen Dank & Gruß,
JudgeDredd