¿Cómo acortar una lista de nombres de variables en bash?

¿Cómo acortar una lista de nombres de variables en bash?

En un script de shell, tengo una lista de variables que he ordenado como $a, $b, $c, etc. Me gustaría imprimir estas variables sin tener que enumerar todas las variables. Mi código actual es el siguiente:

a=1
b=2
c=3
d=4
e=5
f=6
g=7

for x in $a$b$c$d$e$f$g
do
  echo "$x"
done

¿Puedo acortar $a$b$c$d$e$f$g a algo que se refiera de $a a $g?

Respuesta1

Usando "mal" eval:

eval echo \"$(printf '$%s' {a..g})\"

Tenga en cuenta que utilicé comillas de escape que son necesarias para una salida correcta si sus variables deben contener caracteres de espacio.


O utilice el bucle for corregido delprimera respuesta:

for x in {a..g}; do printf "${!x}"; done


O use una matriz en su secuencia de comandos. Es una sintaxis diferente, pero es más fácil de manejar si necesita todos los valores a la vez. He aquí un pequeño ejemplo:

array=(1 2 3 4 x 6)
array+=(7)  # add one more
array[4]=5  # modify element at index 4
printf '%s' "${array[@]}"

Tenga en cuenta que las dos últimas printfdeclaraciones no terminan con una nueva línea.

información relacionada