各ネットワークカードの詳細を含む配列があります。各配列インデックスは、スペースで区切られた3つの値で構成されています。
出力で素敵なテーブルが欲しいです。インデックスの各値に型パターンを割り当てる方法はありますか?
これまでこれが私が使っているものです:
NIC_details[0]='wlp2s0 192.168.1.221 xx:xx:xx:xx:xx:xx'
NIC_details[1]='wwan0 none xx:xx:xx:xx:xx:xx'
NIC_details[2]='virbr0 192.168.122.1 00:00:00:00:00:00'
printf "%-20s\n" "${NIC_details[@]}"
$ 1、$ 2、$ 3の位置で配列インデックスの値にアクセスし、それらの値がスペースで区切られていることを知り、各$ Xの場所に書式設定パターンを適用する方法はありますか?
私も試しました
echo "$i" | column -t
しかし、望む結果は得られませんでした。
ベストアンサー1
すでに実行しているタスクを少し変更すると、次のようになります。
set -f # to prevent filename expansion
for i in ${!NIC_index[@]}
do
printf "%-20s" ${NIC_details[i]}
printf "\n"
done
for
すべての配列インデックスを繰り返すためにループを追加しました${!NIC...
。これが構文です。数値配列なので、インデックスを直接繰り返すこともできます。
ちなみに私はわざわざ出ました。${NIC_details[i]}
引用しないこれにより、シェルは値を区切るために使用されるスペースに値を分割します。printf
したがって、3つの値が表示され、各値に対して%-20s形式を繰り返します。その後、各ネットワークカードの後に改行文字を追加して素晴らしいテーブルを作成しました。
set -f
変数の引用を解除すると、一番上の変数が重要です。それ以外の場合は、シェルが介入して試みます。全体的な状況引用符のない変数に表示されるワイルドカード。
出力例:
wlp2s0 192.168.1.221 xx:xx:xx:xx:xx:xx
wwan0 none xx:xx:xx:xx:xx:xx
virbr0 192.168.122.1 00:00:00:00:00:00