我使用此代码在bash中将文件加载到数组中:
IFS=$'\n' read -d '' -r -a LINES < "$PAR1"
但遗憾的是,此代码会跳过空行。
我尝试了下一个代码:
IFS=$'\n' read -r -a LINES < "$PAR1"
但是这个变体只加载一行。
如何在bash中将文件加载到数组中,而不跳过空行?
P.S。我通过下一个命令检查加载的行数:
echo ${#LINES[@]}
答案 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。