
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
Tú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