Hallo,
ich habe vergessen zu sagen, dass ich mit der Shell "sh" arbeite. Darin funktionieren keine Arrays, bzw nicht so einfach!
root@OpenWrt:~# var=(textfeld: 12, 13, 14, 15, 16)
-ash: syntax error: unexpected "("
Ich gehe von einer txt Datei aus. Diese enthält mehrere Zeilen. Einer davon ist zB "^HFREQINFO:0,6,7,3350,26800,20000,21350,25600,20000".
Daher muß ich zuerst nach ""^HFREQINFO:" Am Zeilenanfang suchen. Danach brauche ich zB Wert2 , Wert4 und Wert6. Diese Werte möchte ich an unterscheidlichen Stellen im Skript wieder ausgeben. zB als "RSSI: 12" wobei "12" $3 wäre.
Aktuell lese ich einzelne Werte aus und schreibe sie in eine Variable oder gleich in eine Datei:
gcom -d /dev/ttyUSB0 -s /etc/gcom/freq.gcom | awk -F, '/^\^HFREQINFO:/ {print $5}' > aktfreq;
das Programm gcom mit der Configdatei "freq.com" liefert ein mehrzeiliges Ergebnis, welches nach "^HFREQINFO:/ " durchsucht wird und das eindeutige Ergebnis in der Datei "aktfreq" speichert.
Starte ich gcom mit einer anderen configdate erhalte ich zB "^CERSSI:0,0,0,0,255,-65,-4,3,2,8,8". Darin sind jetzt alle Werte nach 255 interessant.
Jedenfalls werden die interesanten Werte nur duch Beistriche getrennt.
Bash steht nicht zu Verfügung, da das Skript letztendlich auf einem Router laufen muß. Arrays sind sicher die Lösung!
mit einem array, müsste mein problem so einfach zu lösen sein
xy=$(awk '/HFREQINFO:/' /root/fre)
Sh macht daraus nur eine variable und kein array!
Wie mache ich aus meinem Befehl ein Array?