我正在编写一个小型 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.
ETC..
到目前为止,我已经尝试了几种不同的方法,主要是使用 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] 而不是 [@]*[@]*[@]?