Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: Scriptfrage!

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.08.2002
    Beiträge
    87

    Scriptfrage!

    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

  2. #2
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    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)

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.08.2002
    Beiträge
    87

    re

    habs versucht aber wenn ich mal 1000 macht schreibt er einfach 3000 rein.Wat is da los??

    MFG

    Maruu

  4. #4
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    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)

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Perl, der Kommandozeilen - Taschenrechner

    Code:
    x=3
    y=11
    z=7
    echo $(perl -e "print (($x ** $z / $y) ** (1/2))")
    Zu Deutsch: (x hoch z) durch y und von dem ganzen die Quadratwurzel
    Geändert von fork (02-09-2002 um 22:31 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    13.08.2002
    Beiträge
    87

    re

    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

  7. #7
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    perl ist latürnich die bessere wahl
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  8. #8
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    x ** y heist x hoch y.

    und x hoch 1/2 ist bekanntlich die Wurzel von x
    :-)

  9. #9
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Ich weiss, ist

    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

  10. #10
    Registrierter Benutzer
    Registriert seit
    13.08.2002
    Beiträge
    87

    re

    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

  11. #11
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Kommentare !!!

    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

  12. #12
    Registrierter Benutzer
    Registriert seit
    13.08.2002
    Beiträge
    87

    re

    Danke hat mir schon sehr weitergeholfen.

    MFG

    Maruu

  13. #13
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Talking Wie gesagt, war nur ein Spass

    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

  14. #14
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    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)

  15. #15
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231

    Talking Da hast du wohl recht

    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •