PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell: String in Integer konvertieren, geht das?!?



langerLulatsch
23-02-2005, 11:14
Hallo Zusammen,

kaum registriert und schon ne Frage: :D
Habe mir ein kleines Script gebaut, was mir alle Viertelstunde gewisse Zeilen aus einer Log-Datei sucht und deren Anzahl festhält.
Diese Anzahl schreibe ich mir in ne Datei, um sie beim nächsten Durchlauf zur Verfügung zu haben und feststellen zu können, ob neue Einträge hinzugekommen sind.
Jetzt hatte ich die Idee: Laß dir die Differenz der beiden Durchläufe anzeigen! Geht aber nicht, bekomme die Daten nur als String aus der Datei (Über "cat $Dateiname")zurück!
Gibts da ne Möglichkeit, den String in nen Integer zu konvertieren, um damit rechnen zu können?!

Gruß Uwe

peschmae
23-02-2005, 11:46
Hallo, willkommen im Forum.

In der Shell gibt es keine Datentypen (float, int, etc) sondern nur Strings. d.h da kannst du nix konvertieren. Aber es gibt im Gegenzug Progrämmchen die Rechnen können z.B.


peschmae@thinkpad:~$ expr 4 + 4
8

oder auch das Programm bc, das kann dann noch etwas mehr. Die Übergabe der 4en in obigem Beispiel erfolgt als Strings, also nichts mit ints.

MfG Peschmä

langerLulatsch
23-02-2005, 12:09
Hatte es auf die Weise:

((DIF=$COUNT-$COUNT1)) versucht, da meckerte er immer wegen den Datentypen rum!

Mit
DIF=`expr $COUNT - $COUNT1`
funktioniert es jetzt, wunderbar!

Vielen Dank!!

Gruß Uwe

peschmae
23-02-2005, 13:30
Das ist auch eine Möglichkeit, nur sollte es nicht ((DIF=$COUNT-$COUNT1)) sondern DIF=$(($COUNT-$COUNT1)) heissen.

http://www.tldp.org/LDP/abs/html/arithexp.html

MfG Peschmä

langerLulatsch
23-02-2005, 13:58
Hm, ich hatte mir das aus Unterlagen aus ner Schulung rausgesucht, da stand folgendes:

prompt> ((Zahl=7*5))
prompt> echo $Zahl
35
prompt>

Daher dachte ich, das würde funktionieren.
Ist das eventuell Shell-abhängig??

peschmae
23-02-2005, 16:27
Shell-abhängig ist sowieso immer alles :)

Aber so steht das eigentlich auch im oben erwähnten Link also sollte das mit der Bash gehen. Eigentlich.

MfG Peschmä