Ausgabe durch Shellscript eingrenzen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Ausgabe durch Shellscript eingrenzen

Beitrag von snoop_hallo » 22.10.2006 01:06:58

Kann mir vielleicht jemand behilflich sein, dass die Ausgabe von

Code: Alles auswählen

mbmon
sich nur auf die reine Temperaturangabe des Prozessor beschränkt.

Normale Ausgabe:

Code: Alles auswählen

Temp.= 35.0, 24.5, 22.0; Rot.= 2766,    0,    0
Vcore = 1.63, 1.66; Volt. = 3.38, 5.08, 12.22,   1.71,  2.49
Es soll also möglich sein, dass nach dem Starten des Scripts nur 35 ausgegeben werden soll.

Shellscript Ansatz:

Code: Alles auswählen

TEMP=`mbmon "`
echo $TEMP
Kann mir vielleicht jemand helfen die Eingenzung vorzunehmen?

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 22.10.2006 01:23:09

Das Problem bei mbmon ist, das es sich nicht beendet, und so die Ausgabe des Programmes nie "fertig" wird, es sei denn du legst mit der -c Option, die Anzahl fest. Dann ist es einfach:

Code: Alles auswählen

mbmon -c X | grep Temp | cut -d' ' -f2
Die Ausgabe erfolgt so aber erst nach X mbmon "Durchläufen", da grep die Ausgabe erst weiterverarbeitet, wenn der mbmon Befehl beendet ist.

snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Beitrag von snoop_hallo » 22.10.2006 13:46:32

Danke für die schnelle Hilfe, allerdings sieht die Ausgabe folgendermaßen aus:

Code: Alles auswählen

34.0,
Es müsste also noch folgendes weg: damit die Ausgabe so aussieht: kann mir da vielleicht noch jemand helfen und vielleicht auch eine Quelle nennen, wo man sich Informieren kann, wie man die Ausgabe so einschränken kann.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 22.10.2006 20:15:07

Hi,

dann haeng einfach noch'n cut drann, und nimm diesmal den Punkt als Trennzeichen.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Beitrag von snoop_hallo » 22.10.2006 21:30:59

Kann mir dies vielleicht jemand verdeutlichen?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 23.10.2006 10:15:50

Code: Alles auswählen

mbmon -c X | grep Temp | cut -d' ' -f2 | cut -d'.' -f1
ist wohl gemeint.

snoop_hallo
Beiträge: 110
Registriert: 29.03.2005 19:24:45
Kontaktdaten:

Beitrag von snoop_hallo » 23.10.2006 18:52:20

danke für die schnellen antworten, ein problem hab ich allerdings noch und zwar wie kann ich es in einem shellscript schreiben, dass der Inhalt der datei info.txt in die variable $test importiert wird.
Inhalt von info.txt = 1

Beispiel

Code: Alles auswählen

"Inhalt von info.txt" > test
echo $test
Die Ausgabe soll dann 1 sein.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 23.10.2006 19:20:31

Hallo,

ich verstehe zwar nicht was du vorhast und wozu das ganze, aber es würde in deinem Beispiel so funktionieren:

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ test=`cat info.txt` 
daniel@daniel-laptop:/tmp$ echo $test
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 23.10.2006 19:22:10

Und noch ein paar Informationen aus den Manpages von cut
NAME
cut - Teile jeder Zeile einer Datei entfernen

ÜBERSICHT
cut [OPTION]... [DATEI]...

BESCHREIBUNG
Ausgewählte Teile jeder DATEI auf Standardausgabe ausgeben.

-b, --bytes=LISTE
nur diese Bytes ausgeben

-c, --characters=LISTE
nur diese Zeichen ausgeben

-d, --delimiter=TRENN
TRENN anstelle von TAB als Trenner benutzen

-f, --fields=LIST
nur diese Felder ausgeben; außerdem jede Zeile aus- geben, die kein Trennzeichen enthält, außer die Option -s ist gegeben

-n (ignoriert)

-s, --only-delimited
keine Zeilen ausgeben, die keinen Trenner enthalten

--ouput-delimiter=ZKETTE
ZKETTE als Ausgabetrennzeichen benutzen; Voreinstellung ist das Eingabetrennzeichen

--help eine kurze Hilfe ausgeben und das Programm beenden

--version
Versionsinformation ausgeben und beenden

Benutzen Sie genau eins aus -b, -c oder -f. Jede LISTE besteht aus einem Bereich oder mehreren kommagetrennten. Jeder Bereich is eins
aus.

N Ntes Byte, Zeichen oder Feld, beginnend von 1

N- vom Nten Byte, Zeichen oder Feld bis zum Ende der Zeile

N-M vom Nten zum Mten (einschl.) Byte, Zeichen oder Feld

-M vom ersten zum Mten (einschl.) Byte, Zeichen oder Feld

Ohne DATEI, oder wenn DATEI »-« ist, wird die Standardeingabe gelesen
Oh, yeah!

Antworten