Expr: non-integer argument


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Expr: non-integer argument
# 1  
Old 10-11-2013
Expr: non-integer argument

This is my code.... It works correct, but does not work with 4 and 5. My program is about finding average. so when i run 4 5 it gives me error "expr: non-integer argument".
But when i say sh average 45 67 it works. Whats wrong?how to fix it?

Code:
sum=0
n=0

if [ $# -gt 0 ]
then
for i in $*
do
     if [ -f $i ]
        then
        while read line
              do
              for j in $line
                   do
              n=`expr $n + 1`
              sum=`expr $sum + $j`
                   done
                   done< $i
      else
              sum=`expr $sum + $i`
              n=`expr $n + 1`  
      fi
      done
 else        
      while read line 
      do
      for j in $line
      do
      n=`expr $n + 1`
     sum=`expr $sum + $j` 
     
      done
     done
    fi 
   average=`expr $sum / $n`
     echo $average

# 2  
Old 10-11-2013
I cannot duplicate your problem. Running on Solaris and cygwin under ksh, dash, and bash I get

Code:
$> dash -c  './t.shl 4 5'
4

There is one problem - you are only going to get integer answers because expr does integer arithmetic. Normally averages are floating point numbers....
# 3  
Old 10-12-2013
This looks suspiciously similar to a thread from a few days ago: Finding an average.

Is there some reason why the ksh script I provided in that thread can't be used for this?
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

Expr: non-numeric argument syntax error on line 1, teletype

Hi, I tried to look up the issue i'm experiencing, but i'm confused what's wrong with my script. After executing the script I'm getting the following error expr: non-numeric argument syntax error on line 1, teletype After some research, it seems that the problem relates to bc. I have... (1 Reply)
Discussion started by: nms
1 Replies

2. Shell Programming and Scripting

Getting error in bash script; expr $a + 1: integer expression expected

Hi, I am new to shell/bash script. I am trying to run below script #!/bin/bash a=0 b=10 if then echo "a is equal to be" else echo "a is not equal to be" fi MAX=10 while do echo $a a='expr $a + 1' done (1 Reply)
Discussion started by: Mallikgm
1 Replies

3. Shell Programming and Scripting

how to compare string integer with an integer?

hi, how to I do this? i="4.000" if ; then echo "smaller" fi how do I convert the "4.000" to 4? Thanks! (4 Replies)
Discussion started by: h0ujun
4 Replies

4. Shell Programming and Scripting

expr: An integer value was expected

Hi, I am trying to execute a simple script as below to compare a value from a file and copy that line based on a condition. while read line do code_check = `expr substr "$line" 6 1` if ; then echo "${line}" >> /temp/bill/push_updated.dat else echo "line ignored" fi done <... (8 Replies)
Discussion started by: ramkiran77
8 Replies

5. Shell Programming and Scripting

Non-integer argument in expr

i wrote this simple shell script #!/bin/bash read N1 read N2 expr $N1 + $N2 it work fine in bash and i add it on xinetd for some test but when i try to use in with telnet i got this error : ehsan@debian:~$ telnet 192.168.1.4 1234 Trying 192.168.1.4... Connected to 192.168.1.4.... (14 Replies)
Discussion started by: niasha
14 Replies

6. Shell Programming and Scripting

expr: non-numeric argument

Hi all, i am facing the error "expr: non-numeric argument" when i use the expr command. Following is the expression which i want to execute HR=$(echo `date +%H`) MIN=$(echo `date +%M`) TOT_MIN=`expr "$HR" \* 60+$MIN` | bc echo $TOT_MIN Here I am being reported with the error expr:... (6 Replies)
Discussion started by: sparks
6 Replies

7. Shell Programming and Scripting

how to add integer with expr?

i got a file called Marks The format of Marks is: 12345678 5 7 23456789 7 9 3 What can i do with a loop, read expr and echo command to produce a new file like below: 12345678:12 23456789:20 and also when we adding fewer than 3 value with expr, we need to change any null value for... (13 Replies)
Discussion started by: mingming88
13 Replies

8. Shell Programming and Scripting

expr: Integer argument too large

Hi all, In KSH, I have got an error message like, "expr: Integer argument too large" I received this error message when I mutiply two large values and displaying the resultant output. Is there any other altenative way to go with too large values? Kindly let me know asap... Thanks in... (12 Replies)
Discussion started by: iamgeethuj
12 Replies

9. Shell Programming and Scripting

Argument not recognized as integer

I need to accept a number of arguments at command line and print it in reverse order i use eval `echo x=$1` to capture the argument #! /bin/sh counter=0 while do eval `echo x=$1` arg$counter=$x counter=`expr $counter + 1` shift done but the error keeps... (1 Reply)
Discussion started by: scmay
1 Replies

10. Shell Programming and Scripting

expr+float argument: how can i do?

Hi everybody, I want to know how can i use the command 'expr' to manipulate float number , i have a shell bash and when (for example) i do: y1=`expr \( 1/ 16 \)` it returns 0 and if i do y1=`expr \( 1.6 / 16 \)` it returns non numeric argument. is there another command for mathematic... (4 Replies)
Discussion started by: mips
4 Replies
Login or Register to Ask a Question