我的 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 11
elements read in 开始。
但这12
是神秘的。
这是数据文件:
Ann
Bob
Cindy
Dean
Emily
Frank
Ginger
Hal
Ivy
Justin
Karen
(名称出现在自己的行中,但我无法在本文中以这种方式格式化它)
我已经使用多个实用程序进行了双重检查,文件末尾没有空行,也没有任何行上有任何尾随空格。
答案1
最后一次读取未能找到更多数据时将分配一个空字符串,因此条目数比您的数据多 1。要检查使用printf "'%s'\n" "${students[@]}"
.