将文件内容存储到数组中

时间:2018-12-17 10:30:13

标签: bash

我想做的是从“测试”文件中获取内容,然后对其进行修改并再次显示。

所以测试文件如下:

test
test.com

我想对其进行修改,因此它看起来像这样:

DNS.1 = test
DNS.2 = test.com

所以我正在尝试使用以下方法:

$(i=1
for alt in "${alts[@]}"; do
    echo "DNS.$((i++)) = $alt"
done)

我只是不知道如何从文件中获取内容并将其与上面的代码连接起来。

有人知道它如何工作,或者知道我可以在哪里搜索该问题。

1 个答案:

答案 0 :(得分:1)

正如注释中指出的那样,当您的输入是文件时,有比循环更好的方法。但是,如果您真的想要一个数组,请使用mapfile

< file mapfile -t alts

echo "array alts has ${!alts[@]} entries"
echo "the entries are"
printf '"%s\n"' "${alts[@]}"

顺便说一句:当您输入的不是文件而是数组时,也可以使用Cyrus的awk脚本:

# for files
awk '{print "DNS." NR " = " $0}' file
# for arrays (use only if your input is not a file)
(IFS=$'\n'; awk '{print "DNS." NR " = " $0}' <<< "${array[*]}")
# or
awk '{print "DNS." NR " = " $0}' < <(printf %s\\n "${array[@]}")