[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: