使用空行

时间:2015-08-05 22:02:03

标签: arrays bash

我使用此代码在bash中将文件加载到数组中:

IFS=$'\n' read -d '' -r -a LINES < "$PAR1"

但遗憾的是,此代码会跳过空行。

我尝试了下一个代码:

IFS=$'\n' read -r -a LINES < "$PAR1"

但是这个变体只加载一行。

如何在bash中将文件加载到数组中,而不跳过空行?

P.S。我通过下一个命令检查加载的行数:

echo ${#LINES[@]}

2 个答案:

答案 0 :(得分:2)

您可以使用BASH 4 +中提供的mapfile

mapfile -t lines < "$PAR1"

答案 1 :(得分:2)

为了避免做任何花哨的事情,并保持与常用的所有版本的bash兼容(截至撰写本文时,Apple正在发布bash 3.2.x以避免需要遵守GPLv3):

lines=( )
while IFS= read -r line; do
  lines+=( "$line" )
done

另见BashFAQ #001