来自linux中重新分配的变量的回显值

来自linux中重新分配的变量的回显值,linux,bash,Linux,Bash,我最近在写一个bash脚本。我有一个设置一些变量的配置文件: environment\u information.conf 我读取conf文件并尝试使用预定义的键进行回显 echo $SIT_SERVER_IP echo $SIT_SERVER_PASSWORD 它工作正常,没有任何问题。在我的场景中,我将在执行shell脚本时读取这些值 automation\u script.sh 我尝试使用输入和一些常量值从conf获取值: $ ./automation_script.sh SIT $.S

我最近在写一个bash脚本。我有一个设置一些变量的配置文件:

environment\u information.conf
我读取conf文件并尝试使用预定义的键进行回显

echo $SIT_SERVER_IP
echo $SIT_SERVER_PASSWORD
它工作正常,没有任何问题。在我的场景中,我将在执行shell脚本时读取这些值

automation\u script.sh
我尝试使用输入和一些常量值从conf获取值:

$ ./automation_script.sh SIT
$.SIT_SERVER_IP
xxx.xx.xx.xx
$
它总是打印
SIT\u SERVER\u IP
字符串


但是我期望conf文件对这个
SIT\u SERVER\u IP

的值,我认为您正在寻找间接扩展(第4段):

这将扩展到名保存在
$environment\u name
中的变量的值


概念验证脚本,松散地基于您的代码(
automation\u script.sh
):

运行脚本的输出:

$ bash automation_script.sh SIT
SIT_SERVER_IP=192.10.29.31
SIT_SERVER_PASSWORD=secret
SIT_SERVER_IP
SIT_SERVER_IP=192.10.29.31
SIT_SERVER_PASSWORD
SIT_SERVER_PASSWORD=secret
$
使用更新问题中的environment_information.conf文件:

: "${1:?}"

. ./environment_information.conf
#SIT_SERVER_IP="192.10.29.31"
#SIT_SERVER_PASSWORD="secret"

echo "SIT_SERVER_IP=${SIT_SERVER_IP}"
echo "SIT_SERVER_PASSWORD=${SIT_SERVER_PASSWORD}"

environment_name="${1}_SERVER_IP"
echo "${environment_name}"
echo "${environment_name}=${!environment_name}"

environment_name="${1}_SERVER_PASSWORD"
echo "${environment_name}"
echo "${environment_name}=${!environment_name}"
运行该程序将产生:

$ bash automation_script.sh SIT
SIT_SERVER_IP=xxx.xx.xx.xx
SIT_SERVER_PASSWORD=******
SIT_SERVER_IP
SIT_SERVER_IP=xxx.xx.xx.xx
SIT_SERVER_PASSWORD
SIT_SERVER_PASSWORD=******
$

请不要使您的问题的答案无效。您能否先显示您的
echo$situ SERVER\u IP
echo$situ SERVER\u密码的输出,或者给出一个示例,这可以帮助我编写一些测试脚本请显示配置文件的缩写版本。使用配置内容更新问题这些
situ服务器\u IP
situ服务器\u密码
是否已导出?我尝试了这个。注意印刷。我得到一个空值,请查看更新。如果您已经获得了问号所指示的Bash,那么它应该可以工作。
: "${1:?}"  # Check that a parameter (SIT) was passed.

#. ./environment_information.conf
SIT_SERVER_IP="192.10.29.31"   # Surrogate for configuration file
SIT_SERVER_PASSWORD="secret"   # Surrogate for configuration file

echo "SIT_SERVER_IP=${SIT_SERVER_IP}"
echo "SIT_SERVER_PASSWORD=${SIT_SERVER_PASSWORD}"

environment_name="${1}_SERVER_IP"
echo "${environment_name}"
echo "${environment_name}=${!environment_name}"

environment_name="${1}_SERVER_PASSWORD"
echo "${environment_name}"
echo "${environment_name}=${!environment_name}"
$ bash automation_script.sh SIT
SIT_SERVER_IP=192.10.29.31
SIT_SERVER_PASSWORD=secret
SIT_SERVER_IP
SIT_SERVER_IP=192.10.29.31
SIT_SERVER_PASSWORD
SIT_SERVER_PASSWORD=secret
$
: "${1:?}"

. ./environment_information.conf
#SIT_SERVER_IP="192.10.29.31"
#SIT_SERVER_PASSWORD="secret"

echo "SIT_SERVER_IP=${SIT_SERVER_IP}"
echo "SIT_SERVER_PASSWORD=${SIT_SERVER_PASSWORD}"

environment_name="${1}_SERVER_IP"
echo "${environment_name}"
echo "${environment_name}=${!environment_name}"

environment_name="${1}_SERVER_PASSWORD"
echo "${environment_name}"
echo "${environment_name}=${!environment_name}"
$ bash automation_script.sh SIT
SIT_SERVER_IP=xxx.xx.xx.xx
SIT_SERVER_PASSWORD=******
SIT_SERVER_IP
SIT_SERVER_IP=xxx.xx.xx.xx
SIT_SERVER_PASSWORD
SIT_SERVER_PASSWORD=******
$