0

特定のドメインの 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] のように、対応する配列値だけを出力するにはどうすればよいですか?

4

1 に答える 1

0

あなたが望むものが得られたかどうかはわかりませんが、すべての配列が同じサイズの場合は、単に整数でインデックスを付けることができます:

for (( i = 0; i < ${#array1[@]}; ++i )); do
    ${array1[$i]}
    ${array2[$i]}
    ...
    ${arrayn[$i]}
done
于 2013-05-02T16:46:28.860 に答える