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: