내 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[@]}"
.