Bash Shell 脚本数组长度减一

Bash Shell 脚本数组长度减一

我的 bash shell 脚本中的数组长度似乎减少了 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 11elements read in 开始。

但这12是神秘的。

这是数据文件:

Ann
Bob
Cindy
Dean
Emily
Frank
Ginger
Hal
Ivy
Justin
Karen

(名称出现在自己的行中,但我无法在本文中以这种方式格式化它)

我已经使用多个实用程序进行了双重检查,文件末尾没有空行,也没有任何行上有任何尾随空格。

答案1

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

相关内容