Ich möchte in Bash ein Array erstellen, das alle aktiven Netzwerkschnittstellen enthält.
Ich habe es geschafft, eine for-Schleife zu erstellen, aber wenn ich versuche, das Array zu erstellen, enthält es nur die letzte loSchnittstelle, aber nicht die andere. Das ist mein Code:
#!/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
Und das ist meine Ausgabe:
eno1
eno2
eno3
lo
[lo]
Wie kann ich auch die lo localhost-Schnittstelle vom Array ausschließen?
bashkann für recht komplexe Skripte verwendet werden (wie z. B.kshoderzsh) .... aber je komplexer es ist, desto schwieriger ist es zu lesen, zu verstehen und zu ändern - und desto langsamer wird es (z. B. eine Schleife umher) Das Gabeln mehrerer Programme ist unglaublich langsam. Zu diesem Zeitpunkt übersteigen die Zeit- / Aufwandskosten für das Schreiben und Verwalten eines Shell-Skripts die Kosten für das Erlernen der Grundlagenawk(oderperloder oderpython) und das Umschreiben in etwa 1/10 der Codezeilen erheblich . Wenn Sie bereits eine dieser Sprachen kennen, ist dieser Punkt viel früher erreicht.