次のスクリプトがあります。
for chain in http https ssh
do
iptables -nvxL $chain | tail -1 | awk '{print $2}'
done
しかし、私が本当に望むのは、iptables
各反復のコマンド出力を異なる変数としてキャプチャすることです。名前現在の値と同じでなければなりませんchain
。
したがって、最初のループ反復(ここでは)の場合は、$chain
次のhttp
ようになりたいと思います。
http=$(iptables -nvxL http | tail -1 | awk '{print $2}')
次に私はこれが欲しい:
https=$(iptables -nvxL https | tail -1 | awk '{print $2}')
アイデアを得たことを願っていますが、どうすればいいかわかりません。
ベストアンサー1
あなたの場合は、連想配列を使用します。
declare -A rules
for chain in http https ssh
do
rules[$chain]=$(iptables -nvxL $chain | tail -1 | awk '{print $2}')
done
その後、次のように出力を逆参照して出力にアクセスできます。
printf -- "%s\n" "${rules['http']}"
または
for chain in http https ssh
do
printf -- "%s\n" "${rules[$chain]}"
done