【发布时间】:2013-05-02 16:38:09
【问题描述】:
我正在编写一个小型 bash 脚本,它将查找任何给定域的 MX 记录,然后打印出主机名、IP 地址和 IP 地址的反向地址。我能够成功地将每个主机名、IP 和反向地址存储到 3 个数组中:
$MXHOSTS[@]
$MXIPS[@]
$MXRHOST[@]
每个都包含相同数量的值,并且取决于域有多少 MX 记录。然后我想做的是打印出一行,其中包含所有三个数组中的数据,用于数组中的值的数量。
我怎么能做到。创建一个新数组,使用此数据或 b 将 3 个数组压缩为 1。使用 echo 从所有三个数组中打印出数据?
例子:
$MXHOSTS[0] = aspmx.l.google.com.
$MXIPS[0] = 74.125.129.27
$MXRHOST[0] = ia-in-f27.1e100.net.
然后,我想打印出来:
aspmx.l.google.com。 :: 74.125.129.27 :: ia-in-f27.1e100.net。
对于每个 MX 记录,它会像这样运行:
[~/scripts]# ./whomails google.com
aspmx.l.google.com. :: 74.125.129.27 :: ia-in-f27.1e100.net.
alt1.aspmx.l.google.com. :: 74.125.129.27 :: qe-in-f27.1e100.net.
等等。
到目前为止,我已经尝试了几种不同的方法,主要是使用 for 循环,但如果域有多个 MX 记录,它将打印出所有可能的组合。只需一个 MX,就可以正常工作。
目前我正在使用以下内容,但这给了我所有可能的组合:
for hosts in "${MXHOSTS[@]}"; do
for ips in "${MXIPS[@]}"; do
for rhosts in "${MXRHOSTS[@]}"; do
echo "$hosts :: $ips :: $rhosts"
done
done
done
如何让它只打印相应的数组值,例如 [1-n] 而不是 [@]*[@]*[@]?
【问题讨论】: