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 lo
Schnittstelle, 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?
bash
kann für recht komplexe Skripte verwendet werden (wie z. B.ksh
oderzsh
) .... 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
(oderperl
oder 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.