Re: /bin/sh: Dezimalzahlen vergleichen
On Saturday 26 May 2007 20:09, Gerhard Brauer wrote:
> Gruesse!
Moin,
vielen Dank. Ich dachte bc zu kennen, aber man lernt immer wieder etwas dazu!
Grüsse
> * Michael Renner <michael.renner@gmx.de> schrieb am [26.05.07 18:30]:
> > Moin,
> >
> > in einem Script gilt es, zwei Zahlen zu vergleichen. Ist $A grösser als
> > 5?
> >
> > #!/bin/sh
> > A=35
> > if [ "$A" -gt "5" ] ; then
> > echo groesser
> > fi
> > Das funktioniert für Integerwerte sehr gut. Allerdings kann A auch
> > Kommawerte (z.B. 35.45) annehmen, und dann geht's schief:
> >
> > /tmp/foo.sh: line 6: [: 35.45: integer expression expected
> > cassiopeia:/etc/munin/plugins#
> >
> > Wie kann man das denn abhandeln? Ich überlegte schon mit 'cut' den
> > Dezimalpunkt abzuschneiden. Gibt's einen eleganteren Weg?
>
> z.B. mit bc
> echo "37.4 > 5.2" | bc
>
> Hier ein Schnipsel aus meinem Archiv:
> ------------
> #!/bin/sh
> case `echo "a=$a;b=$b;r=-1;if(a==b)r=0;if(a>b)r=1;r"|bc` in
> 0) echo a=$a and b=$b are equal
> ;; 1) echo a=$a is bigger then b=$b
> ;; *) echo a=$a is less then b=$b
> ;; esac
> -------
>
> Mit expr geht es glaube ich auch, bin aber nicht sicher ob das nicht doch
> irgendwann lexikalisch vergleicht.
>
> > Danke
>
> Gruß
> Gerhard
--
|Michael Renner E-mail: michael.renner@gmx.de |
|D-81541 Munich Germany ICQ: #112280325 |
|Germany Don't drink as root! ESC:wq
Reply to: