Bash Shell 스크립트 배열 길이가 1씩 감소했습니다.

Bash Shell 스크립트 배열 길이가 1씩 감소했습니다.

내 bash 쉘 스크립트의 배열 길이가 1만큼 줄어든 것 같습니다. 텍스트 파일의 요소를 배열로 읽어 들이고 있는데 11배열 길이가 12.

(( count = 0 ))
while read students[$count] ; do
    (( count++ ))
done < students.dat

echo $count

ArrayLength=$((${#students[@]}))

echo $ArrayLength

이 코드는 다음을 출력합니다.

11
12

이는 11읽기가 발생한 후 카운트 증가가 발생하고 읽은 0--indicating 요소로 시작하기 때문에 의미가 있습니다.11

그런데 이것이 12신비롭습니다.

다음은 데이터 파일입니다.

Ann
Bob
Cindy
Dean
Emily
Frank
Ginger
Hal
Ivy
Justin
Karen

(이름은 한 줄에 표시되지만 이 기사에서는 그런 식으로 형식을 지정할 수 없습니다.)

여러 유틸리티를 사용하여 다시 확인했는데 파일 끝에 빈 줄이 없고 줄에 후행 공백이 없습니다.

답변1

마지막 읽기에서는 더 많은 데이터를 찾지 못하면 빈 문자열을 할당하므로 항목 수가 데이터보다 1 더 많습니다. 사용을 확인하려면 printf "'%s'\n" "${students[@]}".

관련 정보