ksh変数の代替形式?

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

${${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

関連情報