Você pode usar eval
builtin para avaliar o nome da variável. Um exemplo que ilustra o ponto:
i="a"
eval ${i}lphabet="abcde"
echo $alphabet
No entanto, recuperar o valor de ${i}lphabet
requer outro truque. Você tem que usar o valor de uma variável como um nome de variável (essencialmente um ponteiro). A sintaxe seria:
#declare a variable that names the other variable:
pointer=${i}lphabet
#dereference the name with the ! syntax:
echo ${!pointer}
Aplicado ao seu caso:
for i in ${alphabet[@]}; do
pointer="$i"array
eval ${pointer}[0]=0
done
No entanto, este é um projeto ruim ... você deve encontrar uma maneira mais convencional de lidar com isso.