ksh 变量替换格式?

use*_*710 4 ksh

我有名为var1EMI, var2EMI, var1DDE,var2DDE等的变量,我需要能够像这样迭代它们;

for dir in var1 var2
do
  echo "EMI value for " $dir " is " ${${dir}EMI}
  echo "DDE value for " $dir " is " ${${dir}DDE}
done
Run Code Online (Sandbox Code Playgroud)

我不知道如何${${dir}EMI}解决替换问题。

gle*_*man 8

ksh 93 有一个nameref命令可以让你为变量创建“别名”:

var1EMI=a
var2EMI=b
for v in var1 var2; do 
  nameref var=${v}EMI
  echo "${v}EMI is $var"
done
Run Code Online (Sandbox Code Playgroud)
var1EMI is a
var2EMI is b
Run Code Online (Sandbox Code Playgroud)

对于 ksh88,您可能会被迫使用eval; 代替:

nameref var=${v}EMI
Run Code Online (Sandbox Code Playgroud)

和:

eval var=\$${v}EMI
Run Code Online (Sandbox Code Playgroud)