4

I have variables named var1EMI, var2EMI, var1DDE, var2DDE, etc and I need to be able to iterate over them like this;

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

I can't figure out how to get the ${${dir}EMI} substitutions to resolve.

Joseph R.
  • 39,549

1 Answers1

8

ksh 93 has a nameref command that lets you create "aliases" to variables:

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

For ksh88, you may be forced to use eval; replace:

nameref var=${v}EMI

with:

eval var=\$${v}EMI
Jeff Schaller
  • 67,283
  • 35
  • 116
  • 255
glenn jackman
  • 85,964