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

Re: /bin/sh: Dezimalzahlen vergleichen



Gruesse!
* 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
-- 
Bundestrojaner - wir sind die Guten!
Nur echt mit 52 Verfassungsbruechen!



Reply to: