Add non-integers using ksh


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Add non-integers using ksh
# 1  
Old 04-26-2007
Add non-integers using ksh?????

I would like to add 4.7 and 1.2. However I am unable to do this with expr.
Any simple ideas (even using something other than expr)?

Example:
me> expr 4 + 1
5

me> expr 4.7 + 1.2
expr: 0402-046 A specified operator requires numeric parameters.

Last edited by 2dumb; 04-26-2007 at 04:35 PM..
# 2  
Old 04-26-2007
awk '{BEGIN print 4.7 + 1.2}'

or might try bc - never used it but

NAME
bc - arbitrary-precision arithmetic language

Might want to try a man on bc
# 3  
Old 04-26-2007
sorry - that should be

awk 'BEGIN{.....
# 4  
Old 04-27-2007
Quote:
Originally Posted by 2dumb
I would like to add 4.7 and 1.2. However I am unable to do this with expr.
Any simple ideas (even using something other than expr)?

Example:
me> expr 4 + 1
5

me> expr 4.7 + 1.2
expr: 0402-046 A specified operator requires numeric parameters.

If you are using ksh93, it has floating-point arithmetic built in:

Code:
echo $(( 4.1 + 1.2 ))

If not, I recommend awk. I use this shell function:

Code:
calc()
{
  awk 'BEGIN {print '"$*"'; exit}'
}

# 5  
Old 04-27-2007
Thank for the replies! Both examples look good I just have not tried them yet. I will let you know once I do. Would there be something similar used to multiply, divide, and subtract? If so could you give an example?
# 6  
Old 04-27-2007
Quote:
Originally Posted by 2dumb
Thank for the replies! Both examples look good I just have not tried them yet. I will let you know once I do. Would there be something similar used to multiply, divide, and subtract? If so could you give an example?
Use * , / or - instead of + in the above code
# 7  
Old 04-27-2007
Thanks for the replies guys keep them coming.

Ok I guess I am not using ksh93 since echo returned an error. I was able to use the awk function to subtract, add, multiply. However when I try to get a percentage with only two decimal places it doesn't seem to work that well. Any suggestions for this?

me> cat test.sh
#!/usr/bin/sh

calc()
{
awk 'BEGIN {print '"$*"'; exit}'
}

calc "1188 %.2f 1454.07"
calc "1188 / 1454.07 * 100"

me> test.sh
0.21454.07
81.7017
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparing Integers (I think)

Hi, I can't figure out what I'm missing. I'm running a query to see if there are any streams recording on my DVR before starting a scripted update. I'm guessing that it is viewing $VIDEO as a string instead of an int. I've tried everything I saw on google but it still comes back as $VIDEO is... (8 Replies)
Discussion started by: Rhysers
8 Replies

2. UNIX for Dummies Questions & Answers

Strings to integers?

Hi, I'm totally new at this, so help will be appreciated. I have a directory with a bunch of files in it. The files are named xinteger_yinteger_zinteger.vtk (eg, x3_y0_z-1.vtk). I want to read the filenames and then assign the integers to variables that I then can use in expressions. So, for... (6 Replies)
Discussion started by: jhsinger
6 Replies

3. Shell Programming and Scripting

Bash Integers/String

Hy friends, I am newbie to bash scripting, can anyone explain how b=${a/23/BB} # Substitute "BB" for "23". this line converts "b" into string and and "d" into Integer. Thanks in advance (4 Replies)
Discussion started by: Qazi
4 Replies

4. Shell Programming and Scripting

Grep float/integers but skip some integers

Hi, I am working in bash in Mac OSX, I have following 'input.txt' file: <INFO> HypoTestTool: >>> Done running HypoTestInverter on the workspace combined <INFO> HypoTestTool: The computed upper limit is: 11 +/- 1.02651 <INFO> HypoTestTool: expected limit (median) 11 <INFO> HypoTestTool: ... (13 Replies)
Discussion started by: Asif Siddique
13 Replies

5. Shell Programming and Scripting

Comparison treating strings as zero integers

I'm trying to write a bash script to perform basic arithmetic operations but I want to run a comparison on the arguments first to check that they're a number greater than zero. I want an error to pop up if the arguments args aren't >= 0 so I have: if ! ]; then echo "bad number: $1" fi ... (14 Replies)
Discussion started by: TierAngst
14 Replies

6. Shell Programming and Scripting

Cancel down 2 integers

Wonderful evening to all of you! My problem has to possible starting points. Well, not really, but getting to either one is no problem at all. So i got either a string in the format of "1920x1080" or simply the integers X = 1920 and Y = 1080. When I am done, I would like to have an output... (5 Replies)
Discussion started by: jakunar
5 Replies

7. Shell Programming and Scripting

integers, floats and text

I am using gawk in a dos shell in windows xp and want to read a datafile and reformat it. The datafile consists of columns of integers, floating point numbers and text strings. Each column is a fixed width and each column contains the same data type, eg all integers, all text. I am looking for a... (0 Replies)
Discussion started by: lookingfor help
0 Replies

8. Programming

Using write() with integers in C

I'm trying to write an integer to a file using the write() function, but write() requires the parameter to be written to be a const void*. How would I go about doing this? also: using itoa() produces a " warning: implicit declaration of function 'itoa' " even though i have #included stdlib.h (2 Replies)
Discussion started by: h@run
2 Replies

9. Shell Programming and Scripting

integers in the if statement

hi, im trying to compare two variables in csh to put in an if statement, eg: set a = $firstnum set b = $secondnum if ($a -ge $b) echo $a But I get an error ("if: Expression syntax"). How can I make csh see my variables as integers? thanks in advance! (5 Replies)
Discussion started by: Deanne
5 Replies

10. UNIX for Dummies Questions & Answers

how do you represent non integers in a shell script?

am trying to write a script that test that the load average which is taken from the uptime command's output to make sure it doesn't pass a certain limit. each time I execute the script, it complains about interger errors. if (2 Replies)
Discussion started by: TRUEST
2 Replies
Login or Register to Ask a Question