KingBonecrusher hat geschrieben:Ich habe bisher mit grep die Werte für vendor, product nacheinander in verschiedene Arrays geschrieben.
das ist doch eine gute Lösung
KingBonecrusher hat geschrieben:
Nur, würde dann die speed Variable weil nur einmal im 2ten Adapter vorhanden für den ersten Adapter ausgegeben werden bei der Ausgabe.
hier gibt es keinen Automatismus! Das ist ein Bug in deinem Script, der sicherlich auch behoben werden kann.
Ich habe hier zum Beispiel ein kleines Testscript geschrieben:
Code: Alles auswählen
#!/bin/sh
addArray() {
local key=`echo $1 | sed -e 's|:||g'`
shift
local value=${@+"$@"}
eval $key[$IDX]="$value"
}
TMPFILE=fake.out
# TMPFILE=`mktemp`
# lshw -C network | grep -F -A1 -B2 "vendor: " >$TMPFILE
IDX=0
while read line; do
if [ "$line" = "--" ]; then
IDX=$(($IDX+1))
else
eval addArray $line
fi
done <$TMPFILE
for ((IDX=0; $IDX<${#vendor[@]}; IDX++)); do
for key in product vendor description speed ; do
varname="$key[$IDX]"
echo "$key[$IDX] = ${!varname}"
done
done
nach dem bei mir keine Speed-Wert ausgegeben wird, habe ich zusätzlich deine gepostete Ausgabe von lshw, in eine "fake.out" Textdatei geschrieben und die Variable TMPFILE auf diese Datei gesetzt. Wenn du die auskommentierten Zeilen wieder einkommentierst kannst du das Script mit der echten Ausgabe von lshw testen
Das Script hat bei mir folgende Ausgabe geliefert:
Code: Alles auswählen
gms1 gms # ./x.sh
product[0] = PRO/Wireless 3945ABG Network Connection
vendor[0] = Intel Corporation
description[0] = Wireless interface
speed[0] =
product[1] = BCM4401-B0 100Base-TX
vendor[1] = Broadcom Corporation
description[1] = Ethernet interface
speed[1] = 100Mb/s
Gruß
gms