BASH:使用IFS将CSV解析为数组时,最后一个数组元素为空字符串时丢失

时间:2018-12-06 01:29:27

标签: arrays bash ifs

当我尝试读取文件并使用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

0 个答案:

没有答案