コマンドの出力を連想配列として返す

コマンドの出力を連想配列として返す

コマンドの出力を連想配列に入れる必要があります。

たとえば、

dig mx +short google.com

次を返します。

20 alt1.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
50 alt4.aspmx.l.google.com.
10 aspmx.l.google.com.
30 alt2.aspmx.l.google.com.

優先順位(10、20、...)をキーに、レコード(aspmx.l.google.com.)を値として使用して連想配列を作成するには?

ベストアンサー1

そのデータを bash 連想配列として読み込む 1 つの方法は次のとおりです。

パスワード:

#!/usr/bin/env bash
declare -A hosts
while IFS=" " read -r priority host ; do
  hosts["$priority"]="$host"
done < <(dig mx +short google.com)    

for priority in "${!hosts[@]}" ; do
  echo "$priority -> ${hosts[$priority]}"
done

出力:

20 -> alt1.aspmx.l.google.com.
10 -> aspmx.l.google.com.
50 -> alt4.aspmx.l.google.com.
40 -> alt3.aspmx.l.google.com.
30 -> alt2.aspmx.l.google.com.

おすすめ記事