ksh 变量替换格式?

ksh 变量替换格式?

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

for dir in var1 var2
do
  echo "EMI value for " $dir " is " ${${dir}EMI}
  echo "DDE value for " $dir " is " ${${dir}DDE}
done

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

答案1

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

var1EMI=a
var2EMI=b
for v in var1 var2; do 
  nameref var=${v}EMI
  echo "${v}EMI is $var"
done
var1EMI is a
var2EMI is b

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

nameref var=${v}EMI

和:

eval var=\$${v}EMI

相关内容