Bashですべてのネットワークインタフェースを含む配列を作成する

Bashですべてのネットワークインタフェースを含む配列を作成する

すべてのアクティブなネットワークインターフェイスを含むBash配列を作成したいと思います。

forループを作成して印刷しましたが、配列を作成しようとすると、最後のインターフェイスだけがlo含まれ、他のインターフェイスは含まれません。これは私のコードです。

#!/bin/bash

for iface in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF)
do
           printf "$iface%s\n"
           declare -a array_test=["$iface"]
done
for i in "${array_test[@]}"; do echo "$i"; done

これは私の結果です。

eno1
eno2
eno3
lo
[lo]

また、配列からlo localhostインタフェースをどのように除外できますか?

ベストアンサー1

回避策は次のとおりです。リストを割り当ててから、リストにアイテムを追加します。

#!/bin/bash

array_test=()
for iface in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF)
do
        printf "$iface\n"
        array_test+=("$iface")
done
echo ${array_test[@]}

出力に 1 行に 1 つの項目を表示するには、次のようにします。

for i in "${array_test[@]}"; do echo "$i"; done

出力から localhost を削除するには:

if [ "$iface" != "lo" ] 
then
    array_test+=("$iface")
fi

おすすめ記事