![为什么我的 bash 脚本在回显 awk 变量时仅输出一行](https://linux22.com/image/863272/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20bash%20%E8%84%9A%E6%9C%AC%E5%9C%A8%E5%9B%9E%E6%98%BE%20awk%20%E5%8F%98%E9%87%8F%E6%97%B6%E4%BB%85%E8%BE%93%E5%87%BA%E4%B8%80%E8%A1%8C.png)
任何人都可能看得出我是脚本新手,在发帖之前尝试过做很多家庭作业。我有一个简单的脚本,用于解析 DNS 区域文件中的 IP 和唯一域名。虽然我无法将所有这些放入脚本中以输出预期格式的文件以输入到另一个系统中,但我无法做到这一点。输出每次查找只打印一行。
#/bin/bash
addresses=($(grep '<uniquefield>' <filename> | awk -F'[ .]' '{print $5 "." $4 "." $3 "." $2"/"$1}'))
domains=($(grep -v '<uniquefield>' <filename> | awk '<uniquefield> {print $1}'|awk -F'.' 'sub(FS $(NF-4) FS $(NF-3) FS $(NF-2) FS $(NF-1) FS $NF,"")'))
echo ${addresses[1]}
echo ${domains[2]}
for i in "${addresses[@]}"
do
:
echo $addresses, disable, , , >import.csv
done
for i in "${domains[@]}"
do
:
echo $domains, disable, , , >>import.csv
done
答案1
你没有$i
在循环内使用变量
for i in "${addresses[@]}"; do
# ..^
echo $addresses, disable, , , >import.csv
# .......^^^ should be: echo $i, ...
done
对于数组变量,当您打印变量而不指定索引时,bash 似乎只给您第一个元素。
$ x=( one two three )
$ echo $x
one