Can expr deal with decimals?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can expr deal with decimals?
# 8  
Old 12-14-2012
A simple way might be to use bc -l and use printf to print the required precision:
Code:
$ c=32
$ f=$(echo "$c / 5 * 9 + 32" | bc -l)
$ printf "%.1f\n" "$f"
89.6
$ printf "%.0f\n" "$f"
90


Last edited by Scrutinizer; 12-14-2012 at 04:35 AM..
# 9  
Old 12-14-2012
If you run the following commands with a Korn shell newer than the November 16, 1988 version, the following will work:
Code:
echo $(($c / 5. * 9 +32))

or if you want it rounded (rather than truncated) to a whole number:
Code:
printf "%.0f\n" $(($c / 5. * 9 + 32))

# 10  
Old 12-14-2012
Thanks a lot everyone. I got that part all sorted out now.
Everything is done, I wrote the whole shell script and it was working fine.


I have temperatures from another file to use as an input file.
ex.... of input file
0
5
10
32
64

I also have the conversion formula in a separate file (f2c.ss)

I needed to have my shell script take those and convert them from Celsius to Fahrenheit, and put them in an output file.

The problem is, I had everything done, and it worked. But I was using a while loop, and I just found out that I need to use as for/do loop.

This is what im working with right now,

This is a snippet of the for loop in my main script file:
Code:
for temp in `cat $input_file`
do
./c2f.ss "$temp"
echo $temp
done


And this is my c2f.ss file (which tested by itself, works perfect)
Code:
read c
f=$(echo $c / 5 \* 9 + 32 | bc -l);
echo $c "=" ${f%%.*} >> ans.file

The c2f script works great now, thanks to the help of all of you.
But something is wrong with my for loop, and I can't figure it out.

when I run my main script I keep getting the following error:

main: 39: ./c2f.ss: Permission denied
0
main: 39: ./c2f.ss: Permission denied
5
main: 39: ./c2f.ss: Permission denied
10
main: 39: ./c2f.ss: Permission denied
32
main: 39: ./c2f.ss: Permission denied
64

I had it all done with a while loop. But I was told that I have to use a for loop, and was given the code for the for loop. But there is obviously an error in the for loop code.

Anyone have any ideas?
# 11  
Old 12-14-2012
Use a while loop instead in your main script:-
Code:
while read value
do
    ./c2f.ss $value
    echo $value
done < $input_file

Accept the argument passed in your c2f.ss script & do the math:-
Code:
c=$1
f=$(echo $c / 5 \* 9 + 32 | bc -l);
echo $c "=" ${f%%.*} >> ans.file

Also make sure your script c2f.ss is executable:-
Code:
chmod +x c2f.ss

# 12  
Old 12-14-2012
Thanks,

I was using a while loop, But I was told I had to use a for loop.....Smilie
# 13  
Old 12-14-2012
That is a Useless Use of Backticks hence I suggested to use while loop instead which is the right way to do.
This User Gave Thanks to Yoda 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

how to find the field has more than 2 decimals

Hi Gurus, I have below sample file, I need find the line which 2rd field has more than 2 decimals. in sample file, I need to find xyz, 123456.789 abc, 1234.45, def xyz, 123456.789, xxx bce, 1234.34, xxx thanks in advance (13 Replies)
Discussion started by: ken6503
13 Replies

2. Shell Programming and Scripting

Getting date in seconds with decimals

I am trying to get date to display decimal Desired output 1350386096256.12 I know this can be done with printf, but are not able to make it work. I have tested this and many otherprintf "%.2f" $(($(date +%s%N)/1000000)) (8 Replies)
Discussion started by: Jotne
8 Replies

3. Shell Programming and Scripting

Round up the decimals

Hi All, I would like to do the following in the shell script 561.76 to 562 I tried using this echo 'scale=0; 749 * 75 /100 ' | bc but just returned only 561 Please help me . I appreciate your help Thanks rajeevm (13 Replies)
Discussion started by: rajeevm
13 Replies

4. UNIX for Dummies Questions & Answers

Regarding Decimals in Cshell

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 achieved... (1 Reply)
Discussion started by: ravindra22
1 Replies

5. Shell Programming and Scripting

Decimals in TCSH

Hello, I want to run a loop with non-integer values (which I know I can't) so I've created a loop of integers and divided it by 10. However, these values are always rounded down to 1 significant figure. How do I get the script to keep and use the decimal value? My script is as follows #... (1 Reply)
Discussion started by: DFr0st
1 Replies

6. Shell Programming and Scripting

test expr VS [ expr ]

What is the difference between test expr VS . For example : if test 5 -eq 6 echo "Wrong" and if echo "Wrong" bot will give the same output as Wrong. Now, what is the difference between these two? though they are producing the same result why we need two? Any answer will be... (2 Replies)
Discussion started by: ashok.g
2 Replies

7. Shell Programming and Scripting

convert Regular decimals to Packed decimals

Hi, I am trying to find if there is a way to convert regular decimal values to Paced decimal values. I tried to find a c program but I could get a Packed converted to regular decimal not the other way round. If not unix please let me know if any other progrimming language I can use to do... (2 Replies)
Discussion started by: mgirinath
2 Replies

8. Shell Programming and Scripting

Bourne and decimals??

I need to get 15% of the variable exer1 to be added to other exercises so far, i've got exer1=$1 aver=`expr $exer \* .15` but i keep getting an error that an integer value was expected. Is there anyway around this? (1 Reply)
Discussion started by: kdyzsa
1 Replies

9. Shell Programming and Scripting

handle decimals

Hi All, How we can handle decimals in (Float) in UNIX. a=73 b=5 c=`expr a / b` i am getting 14 but i need full 14.6 . Can any one help me pls? (1 Reply)
Discussion started by: subin_bala
1 Replies

10. Shell Programming and Scripting

comparing two numbers with the decimals

Can someone tell me how do I comapre two numbers with the decimals in UNIX shell scripting I understand "-gt" can be used only for integers Regards, Giri (4 Replies)
Discussion started by: chittari
4 Replies
Login or Register to Ask a Question