Resolve bash variable containted in another variable
bash, replace, string
Solution
For security reasons it's best to avoid `eval`. Something like this would be preferable:
TEXT_TO_FILTER='I would like to replace this %s to proper value'
var=variable
printf -v TEXT_AFTER_FILTERED "$TEXT_TO_FILTER" "$var"
# or TEXT_AFTER_FILTERED=$(printf "$TEXT_TO_FILTER" "$var")
echo "$TEXT_AFTER_FILTERED"
Problem
I have code like that: ``` TEXT_TO_FILTER='I would like to replace this $var to proper value in multiline text' var=variable ``` All I want to get is: ``` TEXT_AFTER_FILTERED="I'd like to replace this variable to proper value" ``` So I did: ``` TEXT_AFTER_FILTERED=`eval echo $TEXT_TO_FILTER` TEXT_AFTER_FILTERED=`eval echo $(eval echo $TEXT_TO_FILTER)` ``` Or even more weirder things, but without any effects. I remember that someday I had similar problem and I did something like that: ``` cat << EOF > tmp.sh echo $TEXT_TO_FILTER EOF chmod +x tmp.sh TEXT_AFTER_FILTERED=`. tmp.sh` ``` But this solution seems to be to much complex. Have any of You heard about easier solution?