如何在Shell脚本中使用环境变量名中的变量?

Anu*_*nuj 4 shell

我有一个环境配置文件,我已经定义了环境变量.我使用source在shell脚本(bash)中获取这些变量.

我在我的shell脚本中使用checkout命令检查环境变量中定义的位置的文件.现在我需要使用多个位置来检查文件,这些文件可以是任何数字,用于不同的shell脚本运行.

例如.用户在配置文件中提供两个路径PATH1和PATH2,并且NUM_OF_PATHS为2.

在我的shell脚本中,我想要使用下面的内容来使用路径.

i=0
echo ${NUM_OF_PATHS}
while [ $i -lt ${NUM_OF_PATHS} ]
do
    checkout $PATH{$i}
    i=`expr $i + 1`
done
Run Code Online (Sandbox Code Playgroud)

如何使用变量i形成环境变量PATH1或PATH2等?

per*_*eal 6

i=1
while [ $i -le ${NUM_OF_PATHS} ]
do
  CPATH=$(eval echo \$\{PATH$i\})
  echo "PATH$i: $CPATH"
  let i++ 
done
Run Code Online (Sandbox Code Playgroud)

eval组合并评估其参数并执行组合表达式.这里,eval执行:echo ${PATH1}.为了做到这一点,我们首先逃避,${...}以便echo在eval之后可以接收它们.$以前唯一没有逃过的特殊角色i.eval扩展它并剥离转义的字符并使用结果执行echo.

因此,CPATH=$(eval echo \$\{PATH$i\})变为CPATH=$(echo ${PATH1})和CPATH获得回声输出.