Em bash
*, você precisa usar chaves como esta:
echo ${A1[$each]}
para tornar [$each]
um índice na matriz A1
.
Por homem bash (1):
Any element of an array may be referenced using ${name[subscript]}. The braces are required to avoid conflicts with pathname expansion.
Mais abaixo, diz:
Referencing an array variable without a subscript is equivalent to referencing the array with a subscript of 0.
É por isso que o seu código original não funcionou, pois o shell só vê o subscrito se você usar chaves.
Então
echo $A1[$each]
é equivalente a
echo ${A1[0]}[$each]
onde os colchetes não têm nenhum significado especial, então são impressos como estão.
- E em
ksh
e emzsh
se a opçãoKSH_ARRAYS
estiver definida.