Usando nombres de variables variables en bucle

Usando nombres de variables variables en bucle

Soy bastante nuevo en el scripting bash y simplemente recopilé toda la información que necesitaba para mi script.

Quiero recorrer una matriz con un nombre de variable. Mi guión hasta ahora:

#!/bin/bash
declare -a bff=("Abnehmen" "Buecher" "Dating" "Dating" "Fitness" "Handy" "Hunde" "Reisen" "Schmuck" "Schwanger" "Uhren")
declare -a dab=("baby" "beauty" "fitness" "haushalt" "heimwekren")
for product in bff dab; do
    echo "${product[@]}" #works fine, it echoes 'bff' in the first loop
        for sub in ${!product[@]}; do
                        echo "${product}/${sub}" #does not work, echoes 'bff/0'
        done
done

Producción:

bff
bff/0
dab
dab/0
ddb
ddb/0
dwb
dwb/0
pod
pod/0

No entiendo por qué puedo repetir la variable correctamente, pero no puedo usarla en el bucle for. El tutorial que encontré solo trataba sobre cómo hacer eco de la variable varibale, pero ahora cómo usarla en un bucle.

¿Alguien podría ayudarme aquí o guiarme en la dirección correcta?

Mi resultado deseado sería:

bff
bff/Abnehmen
bff/Buecher
bff/Dating
...
dab
dab/baby
dab/beauty
...

Respuesta1

Utilice una referencia variable a través de declare -n refvar=$varname:

#!/bin/bash
declare -a bff=("Abnehmen" "Buecher" "Dating" "Dating" "Fitness" "Handy" "Hunde" "Reisen" "Schmuck" "Schwanger" "Uhren")
declare -a dab=("baby" "beauty" "fitness" "haushalt" "heimwekren")
for product in bff dab; do
    echo "${product[@]}" #works fine, it echoes 'bff' in the first loop
    declare -n parray=$product
        for sub in "${parray[@]}"; do
                        echo "${product}/${sub}" #does not work, echoes 'bff/0'
        done
done

bff
bff/Abnehmen
bff/Buecher
bff/Dating
bff/Dating
bff/Fitness
bff/Handy
bff/Hunde
bff/Reisen
bff/Schmuck
bff/Schwanger
bff/Uhren
dab
dab/baby
dab/beauty
dab/fitness
dab/haushalt
dab/heimwekren

información relacionada