特定のドメインの MX レコードを検索し、ホスト名、IP アドレス、および IP アドレスの逆アドレスを出力する小さな bash スクリプトを作成しています。各ホスト名、IP、および逆アドレスを 3 つの配列に正常に格納できました。
$MXHOSTS[@]
$MXIPS[@]
$MXRHOST[@]
それぞれに同じ数の値が含まれ、ドメインが持つ MX レコードの数によって異なります。次にやりたいことは、配列内の値の数について、3 つの配列すべてからのデータを含む行を出力することです。
どうすれば次のことができるでしょうか。このデータを使用して 3 つの配列を 1 つに凝縮する新しい配列を作成するか、または b. echo を使用して 3 つの配列すべてからデータを出力しますか?
例:
$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 が 1 つしかない場合は、問題なく動作します。
現在、私は以下を使用していますが、これが可能なすべての組み合わせを提供します:
for hosts in "${MXHOSTS[@]}"; do
for ips in "${MXIPS[@]}"; do
for rhosts in "${MXRHOSTS[@]}"; do
echo "$hosts :: $ips :: $rhosts"
done
done
done
[@]*[@]*[@] の代わりに [1-n] のように、対応する配列値だけを出力するにはどうすればよいですか?