[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bash is not capable of comparing of strings and real numbers
From: |
Greg Wooledge |
Subject: |
Re: bash is not capable of comparing of strings and real numbers |
Date: |
Tue, 8 Dec 2009 08:11:36 -0500 |
User-agent: |
Mutt/1.4.2.3i |
On Mon, Dec 07, 2009 at 05:08:02PM -0800, DennisW wrote:
> Since printf understands floats (or acts like it does), you can use it
> plus a little care and luck to do float comparisons in Bash:
> [...]
> $ printf -v a "%08.2f" $a
> $ printf -v b "%08.2f" $b
> $ [[ $a < $b ]] && echo true || echo false
> false # CORRECT
> echo "$a $b"
> 00147.10 00023.00
While this is certainly clever, it requires some knowledge of the
possible range of values being compared, so that one can construct a
suitable printf format specifier. Any unexpectedly large or small
input would break it.
Real floating-point comparisons require the services of an external
program (such as bc or awk) since bash has no built-in support for it.
(Or a loadable bash builtin, but very few people use those.)