bash从文件中读取并存储在数组中

时间:2017-11-20 16:37:35

标签: arrays bash file

假设我有一个看起来像这样的文件:

element1,element2  
element3,element4  
element5,element6

如何在bash中读取此文件并将其存储在数组中,如下所示:

array={element1,element2,element3,element4,element5,element6}

有人可以帮我处理代码吗?谢谢!

3 个答案:

答案 0 :(得分:1)

您可以完全忽略read,只需在设置IFS后使用重定向,例如

$ IFS=$', \t\n'; a=($(<file)); declare -p a
declare -a a='([0]="element1" [1]="element2" [2]="element3" [3]="element4" \
[4]="element5" [5]="element6")'

答案 1 :(得分:0)

您可以使用此bash代码:

while IFS='' read -r line || [[ -n "$line" ]]; do
  array+=("$line")
done < "$1"

echo ${array[@]}

这将读取您通过参数行指定的文件的内容,并逐行读取,同时将值存储在bash数组中。

再见!

答案 2 :(得分:0)

不是逐行阅读,而是用逗号分割,你可以这样做:

IFS=,$'\n' read -d '' -r -a array <file

这将:

  • 使用NUL字符作为行分隔符(-d ''),这样(如果您的文件不包含空字符)立即读取完整文件
  • 使用IFS分隔字段中的“行”(即完整文件),该字段设置为逗号和换行符,IFS=,$'\n'
  • 将所有字词/元素存储在array

输出:

$ printf "%s\n" "${arr[@]}"
element1
element2
element3
element4
element5
element6