假设我有一个看起来像这样的文件:
element1,element2
element3,element4
element5,element6
如何在bash中读取此文件并将其存储在数组中,如下所示:
array={element1,element2,element3,element4,element5,element6}
有人可以帮我处理代码吗?谢谢!
答案 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