Comparison of floating point values in shell


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comparison of floating point values in shell
# 1  
Old 02-21-2013
Wrench Comparison of floating point values in shell

Hi Everyone ,

Need a simple code here , I Have a number in a variable say $a=145.67 . This value changes everytime loop begins .

I need to print a specific message as shown below when the above variable lies in a specific range i.e.

1.if $a lies within 100 and 200 , it should display message1

2.if $a lies within 200 and 300 , it should display message2

3. if $a lies within 300 and 400 , it should display message 3 .

I Have a code which is not working :

Code:
if [$a -ge 100 ] && [$a -lt 200 ]
then
echo "message1"

elseif [$a -ge 200] && [$a -lt 300 ]
then
echo "message2"

elseif [$a -ge 300] && [$a -lt 400 ]
then 
echo "message3"
fi

Note :
variable is a floating number .

would appreciate if someone could fix this or provide a better simple code .


One of the Error am getting :
Code:
a.ksh[5]: if[16783934.78:  not found
+ echo 16783934.78
+ 1> mes.txt
a.ksh[7]: syntax error at line 8 : `else' unexpected

# 2  
Old 02-21-2013
As a start, put a blank between each square bracket and the variables. Try elif instead of elseif.

Code:
if [ $a -ge 100 ] && [ $a -lt 200 ]
then
     echo "message1"
elif [ $a -ge 200 ] && [ $a -lt 300 ]
then
     echo "message2"
elseif [ $a -ge 300 ] && [ $a -lt 400 ]
then 
     echo "message3"
fi

Indention of code is also a good thing to do.

Oh and forgot to point out, should use double square brackets together with >=, <= .... to be able to compare floating point values.

Last edited by zaxxon; 02-21-2013 at 06:13 PM.. Reason: correcting
# 3  
Old 02-22-2013
Quote:
Originally Posted by zaxxon
As a start, put a blank between each square bracket and the variables. Try elif instead of elseif.

Code:
if [ $a -ge 100 ] && [ $a -lt 200 ]
then
     echo "message1"
elif [ $a -ge 200 ] && [ $a -lt 300 ]
then
     echo "message2"
elseif [ $a -ge 300 ] && [ $a -lt 400 ]
then 
     echo "message3"
fi

Indention of code is also a good thing to do.

Oh and forgot to point out, should use double square brackets together with >=, <= .... to be able to compare floating point values.
In recent versions of ksh, you can compare integer and floating point values with both [ expr ] and [[ expr ]], but there are no >= or <= operators and < and > in [[ expr ]] comparisons are for comparing string values, not arithmetic values.

The suggested changes zaxxon proposed in the code tags should work fine when using a ksh version newer than 1988, but keep the -ge and -lt rather than trying to use >= and < for arithmetic comparisons.
This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparison of floating point numbers in bash

I have the following code snippet in bash if ]; then minm=`echo "$diff" | bc` fi It works well for most of the cases. However lets say diff is -0.17 and minm is -0.0017. In such a case the comparison seems to fail. Is the correct way to compare a mixture of positive and... (12 Replies)
Discussion started by: ngabrani
12 Replies

2. Shell Programming and Scripting

Floating Point Numbers in c shell!

I have started using bash but this script which I am working on it, is in c chell. So here is my simple problem: set x = 0.4124\0.234 echo $x 0.4124.0.234 Same operation in Bash gives me correct result in my terminal. So there is something with my c shell that is causing this behaviour.... (8 Replies)
Discussion started by: dixits
8 Replies

3. Programming

Floating Point

Anyone help me i cant found the error of floating point if needed, i added the code complete #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> typedef struct { int hh; int mm; int ss; char nom; int punt; }cancion; typedef struct... (9 Replies)
Discussion started by: Slasho
9 Replies

4. Shell Programming and Scripting

floating point variables korn shell

Hi I'm not using Korn93 but want to use floating point variable. Is there any solution to do that ? thx for help. ---------- Post updated at 02:28 PM ---------- Previous update was at 12:38 PM ---------- I have the following peace of code: for n in `cat log.January.1.array` do ... (3 Replies)
Discussion started by: presul
3 Replies

5. Shell Programming and Scripting

Arithmetic in floating point

is it not possible to simply di aritmetic without using bc or awk i have tried folllowing operatrions but they support only integer types plz suggest me code for floating using values stored in the variables.the ans i get is integer and if i input floating values i get error numeric constant... (6 Replies)
Discussion started by: sumit the cool
6 Replies

6. Shell Programming and Scripting

How to compare floating point numbers in shell script?

How can we compare 2 floating point numbers in SHELL script? (11 Replies)
Discussion started by: dearanik
11 Replies

7. Linux

Floating Point Exception

Hi, I am compiling "HelloWorld" C progam on 32-bit CentOS and i want to execute it on 64-bit CentOS architecture. For that i copied the a.out file from 32-bit to 64-bit machine, but while executing a.out file on 64bit machine I am getting "Floating point exception error". But we can run... (3 Replies)
Discussion started by: Mandar123
3 Replies

8. Linux

Floating point exception !!!

Hi, I have linux fedora 4 ver., 2.6 kernal. And qmail & mysql & samba servers are already configured on this server. When I try to install any package like squidguard ,dansguardian,webmin,rsnapshots with command rpm -ivh . It is giving error as “Floating point exception" Snap View is... (3 Replies)
Discussion started by: ssk01
3 Replies

9. Shell Programming and Scripting

Rounding off the value of Floating point value

Hello, i have some variables say: x=1.4 y=3.7 I wish to round off these values to : x = 2 (after rounding off) y = 4 (after rounding off) I am stuck. Please help. (7 Replies)
Discussion started by: damansingh
7 Replies

10. Shell Programming and Scripting

floating point shell variable

I have a two files >cat file1 jjjjj 10.345 6.673 ppp 9.000 5.883 >cat file2 mmm 80 10 jjjjj 10.305 6.873 ppp 9.000 5.883 I am reading file 1 line by line , and look for the string jjjj and then read the line in file 2 with jjjj I want to get the... (5 Replies)
Discussion started by: jojan
5 Replies
Login or Register to Ask a Question