Erfassen Ausgabe des bash-Befehl, analysieren Sie und speichern Sie in unterschiedlichen bash-Variablen
Erklärung:
Habe ich eine kleine bash - Skript, welches einfach läuft alle Linux Befehl (z.B. sagen ifconfig
)
Die typische Ausgabe von ifconfig ist so etwas wie dieses:
eth0 Link encap:Ethernet HWaddr 30:F7:0D:6D:34:CA
inet addr:10.106.145.12 Bcast:10.106.145.255 Mask:255.255.255.0
inet6 addr: fe80::32f7:dff:fe6d:34ca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1104666 errors:0 dropped:0 overruns:0 frame:0
TX packets:2171 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:444437904 (423.8 MiB) TX bytes:238380 (232.7 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.255.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:15900 errors:0 dropped:0 overruns:0 frame:0
TX packets:15900 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:467306 (456.3 KiB) TX bytes:467306 (456.3 KiB)
Nun, was die meisten Menschen in der Regel tun ist, speichern Sie die gesamte Ausgabe in eine Datei/variable und analysieren auf dieser Grundlage. Ich jedoch möchte wissen, ob es trotzdem, ich könnte bestimmten Teile der Ausgabe in mehr als einer Variablen (sagen wir ein bash-variable genannt ${IPETH0}
tragen Sie die IP-Adresse 10.106.145.12
aus eth0 und ${IPLO}
tragen Sie die IP-Adresse 127.0.0.1
aus lo im obigen Beispiel ohne ausführen von ifconfig-Befehl zweimal).
Etwas wie das, was tee Befehl wird mit der Eingabe-aber ich will dies für das Ausgabe und speichern Sie die Ausgabe in 2 oder mehr Variablen in einem Rutsch. Irgendwelche Ideen?
- Es sei denn, Sie führen Sie Ihr Skript mit
source
kann keine Variablen in der aufrufenden Umgebung. Siehe stackoverflow.com/questions/496702/... - Ich habe nicht ganz glaube, so weit das exportieren der Variablen. Vielen Dank für diesen Leckerbissen trotzdem. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies meint die Reihenfolge der
eth0
undlo
Schnittstellen, aber es zeigt die Grundidee.ifconfig
Ausgabe nicht enthalten sind die Adress-Familie, mein Fehler...man kann versuchenread IPETH0 IPLO <<< $(ifconfig | awk -F'[[:space:]:]+' '/inet[^6]/ { print $3 }')
gehören der Doppelpunkt als Trennzeichen verwendet wird.awk
ist Super...einfach nur Lesen, ein paar von z.B. @EdMorton s Antworten, und Sie werden bald wissen, die meisten Dinge, die Sie brauchen 😉Können Sie awk-und bash-arrays:
Dann können Sie tun:
Lesen Sie jede Zeile der ifconfig-und set-Variablen :