使用下面的代码。它不会复制文件的最后一行。
我尝试了以下读取文件的方法。
“当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
这是最后一行的地方。
答案 0 :(得分:1)
问题在于,read
在最后一行到达文件末尾,而不是行尾定界符(换行符),因此它返回失败状态并退出循环。但是它确实将读取的内容放入数组变量中,因此请检查该内容以使其处理最后一行:
while read -a myLine || [[ ${#myLine[@]} -gt 0 ]]
do
这与solution for read
without -a
非常相似;唯一的区别是如何在最后一个换行之后测试非空行。
答案 1 :(得分:0)
自Bash 4起:
mapfile -t MyArray < "$1"