Non-integer argument in expr


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Non-integer argument in expr
# 8  
Old 05-08-2011
Quote:
Originally Posted by ahamed101
can you tell me how you are executing this? where have you included the arguments? try echo-ing N1 and N2 and see they have the desired values.

regards,
Ahamed
i try this as you said
Code:
#!/bin/bash
read  N1; read  N2
typeset -i N1
typeset -i N2
echo $N1
echo $N2
((sum=N1+N2)) 
echo $sum

and i got this

Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
12
23
12
23
")syntax error: invalid arithmetic operator (error token is "

Connection closed by foreign host.

i put this script under xinetd as a service and i execute it whit telnet
# 9  
Old 05-08-2011
the machine where you are trying to telnet, does this script run on that machine?

Code:
#!/bin/bash
set -x
#and the rest of the code

# 10  
Old 05-08-2011
i try telnet on the same machine with script and another machine but there is same results

Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
+ read N1
1
+ read N2
12
+ typeset -i N1
+ typeset -i N2
+ echo $'1\r'
1
+ echo $'12\r'
12
+ (( sum=N1+N2 ))
")syntax error: invalid arithmetic operator (error token is "
+ echo

Connection closed by foreign host.

---------- Post updated at 03:44 AM ---------- Previous update was at 03:44 AM ----------

i try telnet on the same machine with script and another machine but there is same results

Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
+ read N1
1
+ read N2
12
+ typeset -i N1
+ typeset -i N2
+ echo $'1\r'
1
+ echo $'12\r'
12
+ (( sum=N1+N2 ))
")syntax error: invalid arithmetic operator (error token is "
+ echo

Connection closed by foreign host.

---------- Post updated at 03:48 AM ---------- Previous update was at 03:44 AM ----------

Quote:
Originally Posted by niasha
i try telnet on the same machine with script and another machine but there is same results

Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
+ read N1
1
+ read N2
12
+ typeset -i N1
+ typeset -i N2
+ echo $'1\r'
1
+ echo $'12\r'
12
+ (( sum=N1+N2 ))
")syntax error: invalid arithmetic operator (error token is "
+ echo

Connection closed by foreign host.

---------- Post updated at 03:44 AM ---------- Previous update was at 03:44 AM ----------

i try telnet on the same machine with script and another machine but there is same results

Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
+ read N1
1
+ read N2
12
+ typeset -i N1
+ typeset -i N2
+ echo $'1\r'
1
+ echo $'12\r'
12
+ (( sum=N1+N2 ))
")syntax error: invalid arithmetic operator (error token is "
+ echo

Connection closed by foreign host.

is ( \r ) make thing wrong ?
# 11  
Old 05-08-2011
There is a \r and that's the issue I guess
Try this now, should work

Code:
#!/bin/bash
set -x
read  N1; read  N2
typeset -i N1
typeset -i N2
n1=$( echo $N1 | tr -s "\r" )
n2=$( echo $N2 | tr -s "\r" )
echo $n1" "$n2
((sum=n1+n2)) 
echo $sum

# 12  
Old 05-08-2011
Quote:
Originally Posted by ahamed101
There is a \r and that's the issue I guess
Try this now, should work

Code:
#!/bin/bash
set -x
read  N1; read  N2
typeset -i N1
typeset -i N2
n1=$( echo $N1 | tr -s "\r" )
n2=$( echo $N2 | tr -s "\r" )
echo $n1" "$n2
((sum=n1+n2)) 
echo $sum


same error
Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
+ read N1
12
+ read N2
13
+ typeset -i N1
+ typeset -i N2
++ echo $'12\r'
++ tr -s '\r'
+ n1=$'12\r'
++ echo $'13\r'
++ tr -s '\r'
+ n2=$'13\r'
'13cho '12
 13
+ (( sum=n1+n2 ))
")syntax error: invalid arithmetic operator (error token is "
+ echo

Connection closed by foreign host.

# 13  
Old 05-08-2011
try different combinations

Code:
n1=$( echo $N1 | tr -d '\r' )
n2=$( echo $N2 | tr -d '\r' )
#or
n1=$( echo $N1 | sed 's/\r//g' )
n2=$( echo $N2 | sed 's/\r//g' )

# 14  
Old 05-08-2011
Quote:
Originally Posted by ahamed101
try different combinations

Code:
n1=$( echo $N1 | tr -d '\r' )
n2=$( echo $N2 | tr -d '\r' )
#or
n1=$( echo $N1 | sed 's/\r//g' )
n2=$( echo $N2 | sed 's/\r//g' )

Code:
n1=$( echo $N1 | tr -d '\r' )
n2=$( echo $N2 | tr -d '\r' )

worked , thanks a lot , and one more things , what is this error ?
Code:
Escape character is '^]'.


Code:
ehsan@debian:~$ telnet 192.168.1.4 1234
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
+ read N1
12
+ read N2
45
+ typeset -i N1
+ typeset -i N2
++ echo $'12\r'
++ tr -d '\r'
+ n1=12
++ echo $'45\r'
++ tr -d '\r'
+ n2=45
+ echo '12 45'
12 45
+ (( sum=n1+n2 ))
+ echo 57
57
Connection closed by foreign host.

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

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? sum=0 n=0 if then for i in $* do if ... (2 Replies)
Discussion started by: Natalie
2 Replies

3. 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

4. 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

5. 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

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