我想做的是从“测试”文件中获取内容,然后对其进行修改并再次显示。
所以测试文件如下:
test
test.com
我想对其进行修改,因此它看起来像这样:
DNS.1 = test
DNS.2 = test.com
所以我正在尝试使用以下方法:
$(i=1
for alt in "${alts[@]}"; do
echo "DNS.$((i++)) = $alt"
done)
我只是不知道如何从文件中获取内容并将其与上面的代码连接起来。
有人知道它如何工作,或者知道我可以在哪里搜索该问题。
答案 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[@]}")