Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Mathematische Berechnungen im Shell Script

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.07.2001
    Ort
    München
    Beiträge
    40

    Mathematische Berechnungen im Shell Script

    Hallo Leute,
    Ich möchte hier gerne ein paar Berechnungen von der Shell durchführen lassen.
    Soweit ich das sehe ist das mit der Shell nur eingeschränkt möglich, darum habe ich awk verwendet.

    Folgendes ist gegeben:
    USED --> wird über df ermittelt (in Megabyte)
    MULT --> ein beliebiger Wert in %

    Meine neue Größe NEWSIZE soll $USED + $MULT% in Kilobyte sein.
    Ich habe das so gemacht:
    NEWSIZE=`echo $USED |awk '{printf "%d\n" ,($1+$1*$MULT/100)*1024}'`

    Danach wird eine weitere (Secondary) Größe berechnet.
    Diese soll der $MULT% Größe entsprechen (also falls der Prozent Wert 200KB sind, soll der Secondary Wert 200KB sein.
    Folgendermaßen habe ich das berechnet
    NEWSECEXT=`echo $NEWSIZE |awk '{printf "%d\n" ,($1*$MULT/100)}'`


    Nur anhand des folgenden Beispiels sieht man, dass meine Methode nicht funktioniert. Als MULT wurde 100 verwendet (also 100%)

    Used Space for XXX.TEST2.HFS in MB = 84.926
    New primary space in KB = 158269
    New secondary Extends in KB = 250490763
    adios

    Los_Andros

  2. #2
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi,

    du kannst Shell-Variablen nicht ohne weiteres in einem AWK-Aufruf verwenden. Diese müssen AWK erst bekannt gemacht werden um mit Ihnen zu arbeiten.

    Aus
    Code:
    NEWSIZE=`echo $USED |awk '{printf "%d\n" ,($1+$1*$MULT/100)*1024}'`
    mache mal
    Code:
    NEWSIZE=`echo $USED |awk -v MULT=$MULT '{printf "%d\n" ,($1+$1*MULT/100)*1024}'`
    Beachte das nun nicht mehr mit einem Dollar-Zeichen versehene MULT im AWK-Code. Dies ist eine AWK-Variable, die den Wert der Shell-Variablen $MULT übergeben bekommt.

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.07.2001
    Ort
    München
    Beiträge
    40
    Danke, das wars,
    ich bin auch blöd, hab hier in meinem Beispielscript alles richtig gemacht und in Kommetnarzeichen dahinter ( # Achtung Shellvariabeln != awk Variablen)
    Aber im richtigen Script hab ichs übersehen
    adios

    Los_Andros

  4. #4
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Wenn es nur um einige Berechnungen geht, dann siehe mal unter man bc nach.
    Code:
    [root@rosi firebird]# bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    a=7
    b=9
    a/b
    0
    scale=10
    a/b
    .7777777777
    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

Lesezeichen

Berechtigungen

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