当我尝试读取文件并使用IFS将CSV解析为数组时,如果最后一个元素没有值,则数组会丢失最后一个元素。我想通过使用${#array[@]}
的值进行清理,以确保CSV的列数正确,但是对于最后一列为空的行,此行为是不正确的。
我想念什么?
test.sh:
#!/bin/bash
while read line; do
oldifs=$IFS
IFS=','
array=($line)
IFS=$oldifs
echo "${array[@]} : num_elements =${#array[@]}"
done < $1
list.csv:
1,2,3,4,5,6,7,8,9
1,,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,
输出:
$ ./test.sh list.csv
1 2 3 4 5 6 7 8 9 : num_elements =9
1 3 4 5 6 7 8 9 : num_elements =9
1 2 3 4 5 6 7 8 : num_elements =8