Isso já foi respondido em SO: Como declarar matriz 2D no bash
Ao usar o bash, tenha em mente que é um script e não compila um idioma como C ou java, variáveis por referência ou ponteiro não são usados ou pelo menos não da mesma maneira
A resposta do SO sugere:
#!/bin/bash
declare -A matrix
num_rows=4
num_columns=5
for ((i=1;i<=num_rows;i++)) do
for ((j=1;j<=num_columns;j++)) do
matrix[$i,$j]=$RANDOM
done
done
f1="%$((${#num_rows}+1))s"
f2=" %9s"
printf "$f1" ''
for ((i=1;i<=num_rows;i++)) do
printf "$f2" $i
done
echo
for ((j=1;j<=num_columns;j++)) do
printf "$f1" $j
for ((i=1;i<=num_rows;i++)) do
printf "$f2" ${matrix[$i,$j]}
done
echo
done
o exemplo acima cria uma matriz 4x5 com números aleatórios e imprime-a transposta, com o resultado do exemplo
1 2 3 4
1 18006 31193 16110 23297
2 26229 19869 1140 19837
3 8192 2181 25512 2318
4 3269 25516 18701 7977
5 31775 17358 4468 30345
O princípio é: Criar um array associativo onde o índice é uma string como 3,4. Os benefícios:
é possível usar matrizes de qualquer dimensão;) como: 30,40,2 para 3 dimensões.
a sintaxe está próxima de "C", como matrizes ${matrix[2,3]}