Seu loop usa krn
como a variável de loop. Esse também é o nome da matriz que você passa por cima. O shell não mantém espaços de nomes separados para variáveis de matriz e variáveis não matriciais.
Para cada iteração, krn
será definido para o valor atual da matriz. Isso tem o efeito de modificar o primeiro elemento da matriz em cada iteração. O loop modifica a matriz para que o primeiro elemento seja uma cópia do último elemento após o final do loop.
Para corrigir isso, escolha outro nome para a variável de loop ou para a matriz.
Além disso, você deve usar "${krn[@]}"
(a expansão, aspas duplas) no cabeçote de loop, pois usar ${krn[@]}
não-citado dividiria cada elemento em espaços em branco (ou o que for em $IFS
) e invocar o globeamento de nomes no resultado palavras. O mesmo vale para echo "${krn[i]}"
no último loop.
Supondo que haja pelo menos um elemento na matriz, o loop inteiro poderia alternativamente ser substituído por
printf '%s\n' "${krn[@]}"