从变量展开环境变量 [英] Expand environment variable from variable
问题描述
我有一个如下代码:
my_var =MY_FIRST_ENV_VAR
我的问题是,如何从环境变量MY_ENV_VAR中获取值。
我尝试了很多事情,但主要的问题是my_var现在是一个字符串。
我想这样做的原因是因为我有一些环境变量名称几乎相同。
MY_FIRST_ENV_VAR = R1.2.3
MY_SECOND_ENV_VAR = R2.3.4
FIRST SECOND的变量
; do
branch = MY _ $(echo $ vari)_ENV_VAR;
echo $ branch;
echo $ {branch};
echo$ {branch};
done;
我的代码我只需访问FIRST和SECOND字符串,我需要首先构造变量的名称。
我已经看了相当一段时间,也许我只是在寻找错误的东西。
尝试这个:
MY_FIRST_ENV_VAR = R1.2.3
MY_SECOND_ENV_VAR = R2.3.4
为FIRST SECOND的变量; $ $ $ $ b varName =MY _ $ {vari} _ENV_VAR
branch = $ {!varName}
echo$ branch
done
输出:
R1.2.3
R2。 3.4
$ {!varName}
作为间接扩展,并允许您扩展变量名为 varName
。请参阅bash 手册页详细信息。
如果您的shell不支持上面显示的间接扩展,请使用 eval
:
MY_FIRST_ENV_VAR = R1.2.3
pre>
MY_SECOND_ENV_VAR = R2.3.4
for FIRST SECOND;
branch = $(evalecho \ $ MY _ $ {vari} _ENV_VAR)
echo$ branch
done
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.
解决方案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 calledvarName
. 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
这篇关于从变量展开环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!