GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen Sie ein Array mit allen Netzwerkschnittstellen in Bash

Hier ist eine Lösung, weisen Sie die Liste zu und fügen Sie dann ein Element hinzu:

#!/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[@]}

Wenn Sie möchten, dass die Ausgabe ein Element pro Zeile anzeigt:

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

So entfernen Sie localhost aus der Ausgabe:

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

Mein Versuch:

readarray -t interfaces < <(ip l | awk -F ":" '/^[0-9]+:/{dev=$2 ; if ( dev !~ /^ lo$/) {print $2}}')
for i in "${interfaces[@]// /}" ; do echo "$i" ; done

bash erstellt ein Array aus jeder durch Leerzeichen getrennten Liste (Leerzeichen, Tabulatoren, Zeilenumbrüche), die Sie ihm geben. z.B. array=(a b c) . Wir können die Befehlsersetzung verwenden ($() ), um eine solche durch Leerzeichen getrennte Liste zu generieren. Zum Beispiel:

$ ifaces=( $(ip addr list | awk -F': ' '/^[0-9]/ {print $2}') )

und drucken Sie nun das soeben erstellte Array aus:

$ declare -p ifaces
declare -a ifaces=([0]="lo" [1]="eth0" [2]="eth1" [3]="br1" [4]="br0" [5]="ppp0")

Um lo auszuschließen :

$ ifaces=( $(ip addr list | awk -F': ' '/^[0-9]/ && $2 != "lo" {print $2}') )
$ declare -p ifaces
declare -a ifaces=([0]="eth0" [1]="eth1" [2]="br1" [3]="br0" [4]="ppp0")

Wenn Sie wirklich ifconfig verwenden möchten statt ip , versuchen Sie Folgendes:

ifaces=( $(ifconfig | awk -F':'  '/^[^ ]*: / && $1 != "lo" {print $1}') )

Linux
  1. Erstellt `declare -a A` ein leeres Array `a` in Bash?

  2. Bash-Arrays mit Beispielen

  3. So erstellen Sie eine CPU-Spitze mit einem Bash-Befehl

  4. Alias ​​mit Variable in Bash

  5. Bash:Warte mit Timeout

Bash-Arrays

Assoziatives Array in Bash

Bash-Scripting – Assoziatives Array mit Beispielen erklärt

Bash-Scripting – Indiziertes Array mit Beispielen erklärt

So erstellen Sie Dokumente mit Bash-Skripten

Benutzeroberflächen mit Dialog. Bash-Skripting (IV)