文件中缺少最后一行

时间:2019-06-01 20:34:04

标签: bash

使用下面的代码。它不会复制文件的最后一行。

我尝试了以下读取文件的方法。

  

“当IFS = $'\ n'读-d''-r -a myLine”或“当IFS = $'\ n'读-r -a myLine”

while read -a myLine
do
  for ((i=0;i<"${#myLine[@]}";i++))
  do
    temp_array[$i]+=" ${myLine[$i]}"
  done
done < $1

文件包含以下数字:

1 2
3 4
5 6

当使用echo来查看我得到的数组中的内容时

1 2
3 4

这是最后一行的地方。

2 个答案:

答案 0 :(得分:1)

问题在于,read在最后一行到达文件末尾,而不是行尾定界符(换行符),因此它返回失败状态并退出循环。但是它确实将读取的内容放入数组变量中,因此请检查该内容以使其处理最后一行:

while read -a myLine || [[ ${#myLine[@]} -gt 0 ]]
do

这与solution for read without -a非常相似;唯一的区别是如何在最后一个换行之后测试非空行。

答案 1 :(得分:0)

自Bash 4起:

mapfile -t MyArray < "$1"