[Gelöst] bash script digitemp

bgx

Mitglied
Mitglied seit
19 Mrz 2006
Beiträge
242
Punkte für Reaktionen
0
Punkte
16
Sorry, bin mit bash blutiger Anfänger.

Ich bräuchte ein Script was mir die letzten Daten von digitemp ausliest und an eine aufzurufende url hängt. Bring es aber nicht fertig.

Ich möcht gern aus der Logdatei jeweils den letzten Wert jeden Sensors auslesen.

Das geht mit tail -c 11 /var/tmp/persistent/*.cvs -q hab ich schon rausgefunden.

Leider stehen dann alle Werte untereinander.
Ausgabe davon ist so:
Code:
52.750000;
-0.187500;
20.750000;
54.625000;
38.562500;
;9.937500;
44.562500;
19.062500;

Die ganze Zeile ist so:
Code:
/var/tmp/infoframe # tail -n 1 /var/tmp/persistent/*.cvs -q
02.03.2010 22:21:08;52.750000;
02.03.2010 22:19:38;-0.187500;
02.03.2010 22:21:08;20.750000;
02.03.2010 22:21:08;53.875000;
02.03.2010 22:21:08;38.250000;
02.03.2010 22:21:08;9.937500;
02.03.2010 22:21:08;44.562500;
02.03.2010 22:21:08;19.062500;

Jetzt würde ich die Daten gerne in ne Variable legen und an folgende URL hängen:
Code:
refresh.sh?action=temp&S1=52.75&S2=-0.18&S3=20.75&S4=53.87&S5=38.25&S6=9.93&S7=44.56&S8=19.06

Nur da hörts bei mir auf. Für jemand von euch ist das bestimmt nur nen klacks. Wie kann ich das Problem lösen? Bash HowTos hab ich jetzt schon einige durch, blicks aber nicht.
 
Zuletzt bearbeitet:
Könntest das zB mit dem "for" (each) machen, Google hilft bestimmt
 
Hmm bin jetzt mit dem Script soweit, aber irgendwie speichert er es nich in dem array?

Code:
#!/bin/bash

WERTE=$(tail -n 1 /var/tmp/persistent/*.cvs -q | cut -d ";" -f 2)
for sensor in $WERTE; do
i=$((i+1))
echo s$i=$sensor
WERT[$i]=$(echo s$i=$sensor)
#WERT[{$i}]="test"

done

echo $WERT[2]
 
Das Problem liegt schon vorher in der Schleife:
Code:
echo s$i=$sensor
gibt er Korrekt als
Code:
s1=58.35800
s2=9.86500
...

Aber die Zeile
Code:
WERT[$i]=$(echo s$i=$sensor)
bringt immer
Code:
WERT[1]=s1=58.35800: command not found
 
Mach doch gleich in die Schleife eine wachsende Zeichenkette

ausgabe="${ausgabe}&${i}=${sensor}"
 
Seltsam, bei mir funktioniert genau diese Konstruktion:
Code:
$ cat test.sh
#!/bin/bash

WERTE='1 2 3 4'
for sensor in $WERTE; do
i=$((i+1))
echo s$i=$sensor
WERT[$i]=$(echo s$i=$sensor)
#WERT[{$i}]="test"

done

echo ${WERT[2]}
$ ./test.sh
s1=1
s2=2
s3=3
s4=4
s2=2
Du kannst die Datei mit
Code:
bash -x skript
aufrufen.
 
Oh leck, ich hab immer mit sh test.sh aufgerufen. Vieleicht war das der Fehler? Ich werds heut abend zuhause mal testen. @moment@work

@cuma Das sieht noch besser aus. Werd das auch mal austesten. Man ich kann php, sql, java, ... aber bash Pfff...
 
Das mit Bash hat nicht funktioniert:
Code:
Command not found

Aber mit der Lösung von cuma hat es geklappt.

Danke!
 
Welches Kommando wurde nicht gefunden? bash?
Hast Du es auf der Box ausprobiert? Da gibt es nur eine bash, wenn man sie explizit auswählt.
Dann ist es ja erst recht gut, daß die andere Lösung funktioniert.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,513
Beiträge
2,253,338
Mitglieder
374,330
Neuestes Mitglied
zephyrkeane66
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.