Cómo hacer eco de una cadena de otra variable de shell de cadena

Cómo hacer eco de una cadena de otra variable de shell de cadena

Nos gustaría repetir el valor de una variable de shell que tiene otra cadena de variable en su nombre de variable. p.ej:

queremos el siguiente resultado

var1=1
var2=2

Probamos varias formas similares a la siguiente pero no funcionan.

for j in {1..2}
do
   export var${j}=$j
   echo "var${j}=${var${j}}"
done 

¿Cómo configuramos y hacemos eco de las variables de Shell que contienen una cadena variable en su nombre?

Gracias

Respuesta1

En bash (o ksh), puede usar la sintaxis de indirección ${!var}para hacer referencia a la variable cuyo nombre es el valor de $var. Tiene que ser el nombre completo, así que tienes que hacerlo así:

for j in {1..2}; do
   # This could have been declare instead of export if you don't need
   # to export the variable.
   export var${j}=$j
   varname=var$j
   echo "var${j}=${!varname}"
done

Respuesta2

poderHaga esto como explicó @rici, pero rara vez es una buena idea. Podrías lograr lo mismo con una sintaxis más simple si usas matrices en su lugar:

var=("1" "2");
for j in {0..1}
do
    echo "var$j : ${var[$j]}"
done

información relacionada