从变量展开环境变量 [英] Expand environment variable from variable

查看:155
本文介绍了从变量展开环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下代码:

  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 
MY_SECOND_ENV_VAR = R2.3.4

for FIRST SECOND;
branch = $(evalecho \ $ MY _ $ {vari} _ENV_VAR)
echo$ branch
done
pre>

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 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

这篇关于从变量展开环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆