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-Key: 82399572724

Url: https://administrator.de/contentid/82399572724

Printed on: April 27, 2024 at 08:04 o'clock

Mitglied: 7907292512
Solution 7907292512 Oct 24, 2023 updated at 08:18:53 (UTC)
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.
Member: JudgeDredd
JudgeDredd Oct 24, 2023 at 09:54:21 (UTC)
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