ubuntuusers.de

Probleme beim berchnen von Werten in sh-script

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

ensacom

Anmeldungsdatum:
15. November 2006

Beiträge: 184

Hallo, ich möchte in einem sh-script einen Prozentwert aus zwei Zahlen berechnen.

VOLL=70200
VERBLEIBEND=25620

expr $VERBLEIBEND / $VOLL \* 100

Wieso bekomme ich bei $VERBLEIBEND / $VOLL 0 raus obwohl doch 0,36 rauskommen sollte?

Danke

MrDoubtfire

Anmeldungsdatum:
18. Oktober 2005

Beiträge: 210

Hallo ensacom,

in der Shell kannst Du lediglich einfache (ganzzahlige) Berechnungen durchführen. Für Fließkomma-Werte benötigst Du den Umweg über "bc":

echo $(echo "scale=2 ; (25620/70200)*100" | bc)

MrDoubtfire

ensacom

(Themenstarter)

Anmeldungsdatum:
15. November 2006

Beiträge: 184

Vielen Dank,

kannst du mir auch sagen wieso hinter dem Komma immer 0 rauskommt?
Wenn eh nur 0 steht dann bräuchte ich den Werte ohne Nachkommastelle.

Wie macht man das und wo bekomme ich überhaupt Informationen zu diesen ganzen Befehlen und der Syntax?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4694

Wohnort: Berlin

Hinter dem Komma kommt da immer 0 heraus, weil das scale=2 bewirkt, das mit nur zwei Nachkommastellen gerechnet wird.

Wenn Dich die Nachkommastellen nicht interessieren kannst Du auch ohne bc mit ganzen Zahlen rechnen, in dem Du die Formel umstellst und erst mit 100 multiplizierst.

VOLL=70200
VERBLEIBEND=25620
echo $(($VERBLEIBEND * 100 / $VOLL))

Die Informationen gibt's in der Doku zu den einzelnen Programmen. Zum Beispiel in den man-pages.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17623

Wohnort: Berlin

...und in der $((...)) - Klammerung können die Dollars weggelassen werden:

 echo $((VERBLEIBEND * 100 / VOLL))


aber fragt mich bitte nicht wieso...

Pumbaa80 Team-Icon

Avatar von Pumbaa80

Anmeldungsdatum:
5. März 2007

Beiträge: 2130

Wohnort: Residenz des Rechts

user unknown hat geschrieben:

aber fragt mich bitte nicht wieso...

[url=http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic]man bash[/url] hat geschrieben:

Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax.

Das macht die ganze Sache natürlich besser lesbar. Allerdings wird einem das "$" nicht erspart bleiben, wenn man $0,$1,... referenzieren will.

Antworten |