Leider kein gsed da. Aber ohne das i hinter dem letzten / gehts so halber.
Die Regex scheint noch nicht so ganz zu passen.
Code:
#!/usr/bin/env bash
# ...
# Geräte ermitteln
# ... unnötige Teile herausschneiden.
$LISTSERVICES|sed '/Device:/!d; s/^.*:\s\s*\(.*\),\s\s*Device:\s\s*\(.*\).$/\1:\2/;'|while read device; do
# Wichtige Teile extrahieren (Format pro Zeile ist <name>:<interface>)
NAME=${device%%:*}
IFACE=${device##*:}
# mal debug-Ausgabe ;-):
echo "$NAME"
echo "$IFACE"
case "$IFACE" in
en*)
echo "$IFACE"
# TODO: hier muß erweitert werden
;;
*)
;;
esac
done
Auf der Kommandozeile erhalte ich folgende Ausage von networksetup -list.. | sed 'blablub':
Code:
(Hardware Port: Bluetooth DUN, Device: Bluetooth-Modem)
(Hardware Port: USB-Ethernet, Device: en3)
(Hardware Port: AirPort, Device: en0)
(Hardware Port: iPhone-USB, Device: en2)
(Hardware Port: Bluetooth PAN, Device: en1)
Die Ausgabe des Teilscriptes ist dann folgende:
Code:
(Hardware Port
Bluetooth-Modem)
(Hardware Port
en3)
(Hardware Port
en0)
(Hardware Port
en2)
(Hardware Port
en1)
Also wird durch die Regex nicht der Name gematched sondern der Anfang der Zeile und beim iface haben wir noch das zusätzliche Leerzeichen vor dem Device-Namen und hinten die Klammer.
Bei der Gelegenheit möchte ich nochmal anmerken dass ich Reguläre Echsen zwar für irgendwie geil halte, aber in so einem Fall das herumwickeln der eigenen Hirnwindungen um so einen Ausdruck mehr als schwierig ist