私の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
最後の読み取りでは、より多くのデータが見つからない場合は空の文字列が割り当てられるため、項目数はデータより1より多くなります。使用を確認するにはprintf "'%s'\n" "${students[@]}"
。