我正在编写一个小的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]而不是[@] * [@] * [@]?
答案 0 :(得分:0)
我不确定我是否得到你想要的东西,但如果所有阵列都具有相同的大小,你可以简单地用整数索引它们:
for (( i = 0; i < ${#array1[@]}; ++i )); do
${array1[$i]}
${array2[$i]}
...
${arrayn[$i]}
done