Expand environment variable from variable
environment-variables, shell
Solution
Try this:
MY_FIRST_ENV_VAR=R1.2.3
MY_SECOND_ENV_VAR=R2.3.4
for vari in FIRST SECOND; do
varName="MY_${vari}_ENV_VAR"
branch=${!varName}
echo "$branch"
done
Output:
R1.2.3
R2.3.4
`${!varName}` is known as indirect expansion and allows you to expand the variable called `varName`. Consult the bash man page for details.
If your shell does not support indirect expansion shown above, use `eval` instead:
MY_FIRST_ENV_VAR=R1.2.3
MY_SECOND_ENV_VAR=R2.3.4
for vari in FIRST SECOND; do
branch=$(eval "echo \$MY_${vari}_ENV_VAR")
echo "$branch"
done
Problem
I have a code that looks like this: ``` my_var="MY_FIRST_ENV_VAR" ``` My question is, how do I get the value from the environment variable MY_ENV_VAR. I have tried a lot of thing, but the main problem is that my_var is now a string. The reason I would like to do this is because I have some environment variables that have almost the same name. ``` MY_FIRST_ENV_VAR=R1.2.3 MY_SECOND_ENV_VAR=R2.3.4 for vari in FIRST SECOND; do branch=MY_$( echo $vari )_ENV_VAR; echo $branch; echo ${branch}; echo "${branch}; done; ``` I have tried a couple of other things as well. I my code I just have access to the FIRST and SECOND strings, I need to construct the name of the variable first. I have looked for quite some time, and maybe I am just looking for the wrong thing.