Bash Shell 脚本数组长度减一

Joe*_*Joe 4 bash array

我的 bash shell 脚本中数组的长度似乎偏离了 1。我有11一个文本文件中的元素,我正在读入一个数组,但我的数组长度似乎是12.

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

echo $count

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

echo $ArrayLength
Run Code Online (Sandbox Code Playgroud)

此代码输出:

11
12
Run Code Online (Sandbox Code Playgroud)

这11是有道理的,因为计数增量发生在读取发生之后,并以0--indicating11元素读入开始。

但这12很神秘。

这是数据文件:

Ann
Bob
Cindy
Dean
Emily
Frank
Ginger
Hal
Ivy
Justin
Karen
Run Code Online (Sandbox Code Playgroud)

(名称出现在自己的行上,但我无法在这篇文章中以这种方式对其进行格式化)

我已经仔细检查了多个实用程序,文件末尾没有空行,也没有任何行的尾随空格。

Jan*_*nis 8

未能找到更多数据的最后一次读取将分配一个空字符串,因此条目数比您的数据多一个。要检查使用printf "'%s'\n" "${students[@]}".