Hallo!
Ich hab folgendes Script erstellt:
sollzeit=$((90/28))
echo $sollzeit > /scripte/internet/status/auslastung/auslastung.log
In die Datei schreibt er 3 anstatt einem genauen Wert 3,xxx wie bekomm ich das genauer hin??
MFG
Maruu
Hallo!
Ich hab folgendes Script erstellt:
sollzeit=$((90/28))
echo $sollzeit > /scripte/internet/status/auslastung/auslastung.log
In die Datei schreibt er 3 anstatt einem genauen Wert 3,xxx wie bekomm ich das genauer hin??
MFG
Maruu
es sieht so aus, als würden die letzten stellen abgeschnitten und nur ein integer geschrieben werden.
versuch doch mal sollzeit=$((90/28*1000)) . bei der Ausgabe musst du dann halt zurückrechnen.
"Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)
habs versucht aber wenn ich mal 1000 macht schreibt er einfach 3000 rein.Wat is da los??
MFG
Maruu
dann versuch's mal VOR der division:
1000*90/28
"Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)
Perl, der Kommandozeilen - Taschenrechner
Zu Deutsch: (x hoch z) durch y und von dem ganzen die QuadratwurzelCode:x=3 y=11 z=7 echo $(perl -e "print (($x ** $z / $y) ** (1/2))")
Geändert von fork (02-09-2002 um 22:31 Uhr)
cool hats da rigendwo ne Anleitung dazu???
Weil was Wurzel und so ist sollte ich nachlesen können
**(1/2) usw. meine ich
MFG
Maruu
perl ist latürnich die bessere wahl
"Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)
x ** y heist x hoch y.
und x hoch 1/2 ist bekanntlich die Wurzel von x
:-)
voellig ideotisch, aber Division in der Bash ;-)))
#!/bin/sh
i=0
((a=$1/$2))
((b=$1%$2))
echo $a"," > /tmp/erste
cp /dev/null /tmp/zweite
while (( $i < $3 )); do
((b*=10))
((a=$b/$2))
((b=$b%$2))
z=`more /tmp/zweite`
rm /tmp/zweite
echo $z$a >> /tmp/zweite
x=$b
((i=i+1))
done
aaa=`more /tmp/zweite`
bbb=`more /tmp/erste`
echo $bbb$aaa
rm /tmp/erste
rm /tmp/zweite
Da kann man dann auch sagen, auf wieviel Stellen genau ($3)
T;o)Mes
************************************************
Man(n oder Frau) muss nicht alles wissen,
Man(n oder Frau) muss nur wissen wo es steht !
************************************************
http://www.sandtom.net
ICQ 176436259
Hallo!
Ist ja gut das es doch geht nur mit dem Quelltext komm ich ned ganz zu recht. Kannst du noch Kommentare dazu machen??? Vor allem wo ist der unterschied zwischen 3/4 und 3%4???
MFG
Maruu
Sollte eigendlich nur ein Spass sein, aber wenn du es benutzen moechtest, bitte ;-)
Das ganze *funct* wie ein Division auf dem Papier.
Also der Unterschied zwischen / und % ist der, dass der eine
dividiert --> /
der andere
den REST der Divsion ermittelt --> %
Was der REST einer Division ist weist du hoffentlich.
90 / 28 = 3, REST 6 (3 * 28 = 84, 90 - 84 = 6)
- dann muss man nur wie auf dem Papier --> REST und eine Null rann ( jetzt kommen die Stellen nach dem Komma), also REST * 10
- Und dann geht der Spass in der Schleife solange wie i kleiner ist als $3 ((i=$i+1))
wie auf dem Papier ;-)
- Man koennte auch eine Abfrage stellen, ob der REST == 0 ist, um dann die Schleife zu verlassen ;-), aber war ja nur ein Spass, ausserdem kann man so die Stellen hinter dem Komma direkt bestimmen. ( koennte man auch anders, ich weiss, aber s.o.)
- Der ganze "Schwanz" mit den Hilfs-Files ist nur fuer eine formatierte Ausgabe.
- cp /dev/null /tmp/zweite --> erzeugen einer neuen Datei ( Ich weiss die meisten missbrauchen touch dafuer)
- z=`more /tmp/zweite` --> lese was bisher ermittelt wurde in z
- dann loesche das File
- echo $z$a >> /tmp/zweite --> schreibe z und die neue Zahl in das File
- Den ganzen Rest muesstest du verstehen ;-)
T;o)Mes
Geändert von tomes (04-09-2002 um 14:51 Uhr)
************************************************
Man(n oder Frau) muss nicht alles wissen,
Man(n oder Frau) muss nur wissen wo es steht !
************************************************
http://www.sandtom.net
ICQ 176436259
Danke hat mir schon sehr weitergeholfen.
MFG
Maruu
Wenn du es richtig machen willst, sieh dir mal an was fork gepostet hat.
Perl ist nicht jedermanns Sache, aber um vieles staerker als die Bash.
Beides kombinieren kann man eben auch.
Beispiel:
#!/bin/sh
a=90
b=28
echo $(perl -e "print ( $a / $b );")
--------------------------------------
Das sind nur 4 Zeilen, im Gegensatz zur Division in der Bash --> ueber 20
Fazit:
Immer die richtige "Script"-Sprache fuer ein *prob* benutzen.
T;o)Mes
************************************************
Man(n oder Frau) muss nicht alles wissen,
Man(n oder Frau) muss nur wissen wo es steht !
************************************************
http://www.sandtom.net
ICQ 176436259
Immer die richtige "Script"-Sprache fuer ein *prob* benutzen.
Perl ist für Faule, denn wer Perl kann, muss eigentlich keine andere (Skript-)Sprachen lernen(sofern man nicht gezwungen ist vorhandene Programme in anderen Sprachen zu warten), da damit fast alles geht. Ausserdem ist Perl plattformübergreifend verfügbar -> noch besser für Faulenzer, da man sich nicht mit VBx & Windows-Batch rumärgern muss.
Auch in Unix-derivaten sind Shellscripte nicht 100%-ig kompatibel was z. B. die Ausgabe im Zusammenhang mit Ansi-Escape-Sequenzen(->echo-Befehl+Schalter) betrifft, mal abgesehen davon das viele Kommandos leichte Unterschiede aufweisen was Name und Schalter betrifft.
Geändert von fork (06-09-2002 um 20:43 Uhr)
Ich komme nun mal aus der C/C++ Schule und da faellt einem Perl immer erst zu Schluss ein.
Muss mich mal langsam mehr damit beschaeftigen.
T;o)Mes
P.S.: Aber ist doch ein lustiges Beispiel --> Division in der Bash
was man so alles machen kann, wenn man nur einwenig von dem ganzen Beherrscht
Schleifen sind Schleifen
************************************************
Man(n oder Frau) muss nicht alles wissen,
Man(n oder Frau) muss nur wissen wo es steht !
************************************************
http://www.sandtom.net
ICQ 176436259
Lesezeichen