A última leitura que não conseguir encontrar mais dados atribuirá uma string vazia, portanto, o número de entradas é um a mais que seus dados. Para verificar isso, use printf "'%s'\n" "${students[@]}"
.
O comprimento de uma matriz no meu script de shell bash parece estar desativado em um. Eu tenho 11
elementos em um arquivo de texto que estou lendo em uma matriz, mas o tamanho da minha matriz parece ser 12
.
(( count = 0 ))
while read students[$count] ; do
(( count++ ))
done < students.dat
echo $count
ArrayLength=$((${#students[@]}))
echo $ArrayLength
Este código gera:
11
12
O 11
faz sentido, pois o incremento de contagem ocorre depois que a leitura ocorre e começa com 0
- indicando 11
elementos lidos.
Mas o 12
é misterioso.
Aqui está o arquivo de dados:
Ann
Bob
Cindy
Dean
Emily
Frank
Ginger
Hal
Ivy
Justin
Karen
(os nomes aparecem em suas próprias linhas, mas não consegui formatá-lo dessa maneira)
Eu verifiquei duas vezes com vários utilitários e NÃO há uma linha em branco no final do arquivo, nem espaços à direita em nenhuma linha.