Bash 动态生成变量并在shell脚本中获取相应的值

Bash 动态生成变量并在shell脚本中获取相应的值,bash,shell,Bash,Shell,我已经编写了shell脚本,它从其他脚本(def.sh)获取变量 我的def.sh如下所示: SERVERS[0]=host1.com SERVERS[1]=host1.com SERVER1_HOME_DIR="/path1" SERVER2_HOME_DIR="/path2" My main.sh将尝试使用def.sh中的以下变量进行for循环: count=1 for server in ${SERVERS[@]} do echo "value " $(echo server${cou

我已经编写了shell脚本,它从其他脚本(def.sh)获取变量

我的def.sh如下所示:

SERVERS[0]=host1.com
SERVERS[1]=host1.com

SERVER1_HOME_DIR="/path1"
SERVER2_HOME_DIR="/path2"
My main.sh将尝试使用def.sh中的以下变量进行for循环:

count=1
for server in ${SERVERS[@]}
do
echo "value " $(echo server${count}_HOME_DIR) // I'm not getting   the /path1 here
count=`expr $count + 1`
done

它仍将打印值
SERVER1\u HOME\u DIR
SERVER2\u HOME\u DIR

请帮助获取服务器主目录的值


提前感谢。

您可以构建变量名并将其存储在变量中并使用它。在大括号中进行变量扩展时,如果第一个字符是
其余部分可以是要展开的变量的名称,也可以是“外部”展开的变量的名称。试着这样做:

name=SERVER${count}_HOME_DIR
echo ${!name}

@开发人员很高兴这起作用。实际上,使用数组作为路径也可能更有意义,而不是尝试动态地构建变量名