if test for higher value between 2 decimal numbers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting if test for higher value between 2 decimal numbers
# 1  
Old 07-29-2011
if test for higher value between 2 decimal numbers

Hi
I would like to test for a max number value. It may be a decimal so I know I have to pipe into bc.
I just cannot get the syntax for this to work. I cannot get passed an error with the bracket - see below.
Any help appreciated.
Regards
Ewan




This works:

Code:
[ewan@sbc-san-01]/export/home/ewan> cat xx.ksh
#!/bin/sh
uname -a

max=6
val=3
if [ $max -gt $val ]
  then
    echo MAX $max VAL $val
  fi

Output:
=======
Code:
[ewan@sbc-san-01]/export/home/ewan> ./xx.ksh   
SunOS sbc-san-01 5.10 Generic_144488-12 sun4v sparc SUNW,SPARC-Enterprise-T5220
MAX 6 VAL 3





This fails:

Code:
[ewan@sbc-san-01]/export/home/ewan> cat ./xx.ksh
#!/bin/sh
uname -a

max=6
val=3
#if [ $max -gt $val ]
if [ $(echo "$max -gt $val" |bc) -eq 1 ]
  then
    echo MAX $max VAL $val
  fi

Output:
=======
Code:
[ewan@sbc-san-01]/export/home/ewan> ./xx.ksh    
SunOS sbc-san-01 5.10 Generic_144488-12 sun4v sparc SUNW,SPARC-Enterprise-T5220
./xx.ksh: syntax error at line 7: `(' unexpected


Last edited by pludi; 07-29-2011 at 08:52 AM..
# 2  
Old 07-29-2011
Code:
% max=3.11111; val=3.11101

% if [ $(echo "$max > $val" |bc) -eq 1 ]
then
echo MAX $max VAL $val
fi
MAX 3.11111 VAL 3.11101


Last edited by pludi; 07-29-2011 at 08:49 AM..
# 3  
Old 07-29-2011
And this is what I get:
Code:
[ewan@sbc-san-01]/export/home/ewan> cat ./xx.ksh
#!/bin/sh
uname -a

max=6.3
val=3.2
#if [ $max -gt $val ]
if [ $(echo "$max < $val" |bc) -eq 1 ]
  then
    echo MAX $max VAL $val
  fi


[ewan@sbc-san-01]/export/home/ewan> ./xx.ksh    
SunOS sbc-san-01 5.10 Generic_144488-12 sun4v sparc SUNW,SPARC-Enterprise-T5220
./xx.ksh: syntax error at line 7: `(' unexpected

What shell did you use, Yazu?

Moderator's Comments:
Mod Comment Please use [CODE] tags when posting source listings, command lines, ...

Last edited by pludi; 07-29-2011 at 08:53 AM..
# 4  
Old 07-29-2011
You have the shells mixed up. As far as I remember, /bin/sh is the original bourne shell on Solaris, which has less features than the Korn shell (ksh), including the $() function.
# 5  
Old 07-29-2011
zsh But $(...) is POSIX.
I'm sure pludi is right. You can use `echo ...` instead of $(...) in the original Bourne shell.
# 6  
Old 07-29-2011
I've tried ksh and sh below.
Ewan

Code:
#!/bin/ksh
uname -a

max=6.3
val=3.2
#if [ $max -gt $val ]
if [ `echo "$max < $val" |bc` -eq 1 ]
  then
    echo MAX $max VAL $val
  fi

output:
[ewan@sbc-san-01]/export/home/ewan> ./xx.ksh
SunOS sbc-san-01 5.10 Generic_144488-12 sun4v sparc SUNW,SPARC-Enterprise-T5220
syntax error on line 1, teletype
./xx.ksh[7]: test: argument expected


Code:
#!/bin/sh
uname -a

max=6.3
val=3.2
#if [ $max -gt $val ]
if [ `echo "$max < $val" |bc` -eq 1 ]
  then
    echo MAX $max VAL $val
  fi

output:
[ewan@sbc-san-01]/export/home/ewan> ./xx.sh
SunOS sbc-san-01 5.10 Generic_144488-12 sun4v sparc SUNW,SPARC-Enterprise-T5220
syntax error on line 1, teletype
./xx.sh: test: argument expected
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Decimal numbers and letters in the same collums: round numbers

Hi! I found and then adapt the code for my pipeline... awk -F"," -vOFS="," '{printf "%0.2f %0.f\n",$2,$4}' xxx > yyy I add -F"," -vOFS="," (for input and output as csv file) and I change the columns and the number of decimal... It works but I have also some problems... here my columns ... (7 Replies)
Discussion started by: echo manolis
7 Replies

2. Shell Programming and Scripting

Swapping a string of numbers between higher and lower order values(HEX)

I have this below string in a variable cutString=21222222222222222122222222222222 this string is nothing but hex values depicted as below 21:22:22:22:22:22:22:22:21:22:22:22:22:22:22:22 so what i want to achieve is swap the lower order with higher order values in the... (3 Replies)
Discussion started by: vivek d r
3 Replies

3. Shell Programming and Scripting

Comparing decimal numbers between 0 and 1

For numbers between 0 and 1 the below logic is not working. Output of above shall be "correct" but its echoing "incorrect".Kindly suggest a=.1 if then echo correct else echo incorrect fi Video tutorial on how to use code tags in The UNIX and Linux Forums. (3 Replies)
Discussion started by: itsvikas
3 Replies

4. UNIX for Dummies Questions & Answers

If then else for decimal numbers part2

Hi, I have a small problem with my script. I have everything in order but it doesnt seem to compare anything less than 1 correctly. If the input is more than 1, then the results is correct. If the input is 0.xxx (anything) it returns erroneous results. Pls help input=0.12 if ; then ... (7 Replies)
Discussion started by: streddy
7 Replies

5. UNIX for Dummies Questions & Answers

Condition for decimal numbers

Hi experts, My number output has somehting like below filename /temp 0.23 10.23 How do i put a condition to the above numbers? e.g if then the . seem to give me problems. Pls help. thanks ---------- Post updated at 05:25 PM ---------- Previous update was at 05:23 PM... (9 Replies)
Discussion started by: streddy
9 Replies

6. Shell Programming and Scripting

Regarding decimal numbers

Hello... I am new to unix and I am wondering if in a C-shell script , Are we supposed to use only whole numbers........ for example..if a program needs to calculate the average of some numbers........ @ avg = (($1 +$2 + $3)/3)) is returning a whole number.........How can a decimal be... (7 Replies)
Discussion started by: ravindra22
7 Replies

7. Shell Programming and Scripting

Comparing Decimal Numbers

Im trying to compare two numbers with decimals but its not working as expected. a=1 b=1.1 if then echo "equal" fi When I do this it says that the numbers are equal. Ultimately Im using -le and -ge in the if statements but I tested with -eq for simplicity. Any way to make this... (3 Replies)
Discussion started by: Grizzly
3 Replies

8. Shell Programming and Scripting

Test decimal number

Hi, I would like test if a number is a decimal number or not (9 Replies)
Discussion started by: francis_tom
9 Replies

9. Shell Programming and Scripting

decimal numbers

Hi friends How can I use "for loop" for decimal numbers? ex: 0.1 < x < 0.6 I used this commands but does'nt work. LIMIT=0.6 for ((x=0.1; x<=LIMIT; x++)) do - - - done Many thanks (1 Reply)
Discussion started by: snow
1 Replies

10. Shell Programming and Scripting

compare decimal numbers

Hi anyone, i need to compare two decimal numbers i thought that it could be do it with if but... :( So, i'm writing in csh and i really apreciate if anyone can help me if ( $ppl_kn <= $ppl_wb ) then echo "############# KNdiscount model has the lowest perplexity" set... (5 Replies)
Discussion started by: tmxps
5 Replies
Login or Register to Ask a Question