If statement fails with integer expression expected


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If statement fails with integer expression expected
# 1  
Old 03-03-2017
Tools If statement fails with integer expression expected

Below is what i have in my script.

Code:
htcount=$(curl -s --user tomcatstatus:tomcatstatus http://`hostname`.mypc.com:887/manager/jmxproxy?qry=Catalina:type=ThreadPool,name=\"http-nio-887\" |grep sBusy | cut -d ' ' -f2)
echo $htcount
if [ $htcount -ge 10 ]; then 
echo "more than 10"
else
echo "Less than 10"
fi

Output:
Code:
3
: integer expression expected/tmp/logs/myscript1.sh: line 11: [: 3

I tried various fixes like expr and quotes but i cannot overcome this error as seen in the output.

Code:
bash$: uname -a
SunOS mymac 5.11 11.2 sun4v sparc sun4v

Kindly suggest.


Moderator's Comments:
Mod Comment Please use [code]...[/code] tags instead of [quote]...[/quote] tags for code and samples

Last edited by Scrutinizer; 03-04-2017 at 08:15 AM.. Reason: quote tags -> code tags
# 2  
Old 03-03-2017
there's probably a hidden/trailing space in htcount.
Could you try and post the output?
Code:
htcount=$(curl -s --user tomcatstatus:tomcatstatus http://`hostname`.mypc.com:887/manager/jmxproxy?qry=Catalina:type=ThreadPool,name=\"http-nio-887\" |grep sBusy | cut -d ' ' -f2)
echo "[${htcount}]"

also modify the if line to this:
Code:
if [ "${htcount}" -ge 10 ]; then

# 3  
Old 03-03-2017
Tools

After implementing your suggestion echo "[${htcount}]" here is the new output.

Code:
]1
: integer expression expected/tmp/logs/myscript1.sh: line 11: [: 3



Moderator's Comments:
Mod Comment Please use [code]...[/code] tags instead of [quote]...[/quote] tags for code and samples

Last edited by Scrutinizer; 03-04-2017 at 08:14 AM..
# 4  
Old 03-03-2017
Quote:
Originally Posted by mohtashims
After implementing your suggestion echo "[${htcount}]" here is the new output.
well.... that tells me that your curl ... | grep ... | cut ... is not returning what you think it's returning.
You need to debug how the htcount is derived.

Oh no, hang on - this doesn't make much sense... the echo "[${htcount}]" is supposed to return the value inside [], but it isn't.
The issue is somewhere else.
Add set -x at the top of your script and see what comes out.
And change

echo "[${htcount}]" to echo "htcount->[${htcount}]"
This User Gave Thanks to vgersh99 For This Post:
# 5  
Old 03-03-2017
Tools

Code:
more /tmp/script1.sh
#!/bin/bash
set -x
htcount=$(curl -s --user tomcatstatus:tomcatstatus http://`hostname`.myc.com:443/manager/jmxproxy?qry=Catalina:type=ThreadPool,name=\"http-nio-443\" |grep currentThreadsBusy | cut -d ' ' -f2)
echo "htcount->[${htcount}]"
if [ "${htcount}" -ge 10 ]; then
echo "ALERT ::: "
else
echo "We are good"
fi

Output:
Code:
+++ hostname
++ grep currentThreadsBusy
++ cut -d ' ' -f2
++ curl -s --user tomcatstatus:tomcatstatus 'http://mymac.myc.com:443/manager/jmxproxy?qry=Catalina:type=ThreadPool,name="http-nio-443"'
+ htcount=$'1\r'
]'echo 'htcount->[1
]tcount->[1
+ '[' $'1\r' -ge 10 ']'
: integer expression expected
+ echo 'We are good'
We are good


Moderator's Comments:
Mod Comment Please use [code]...[/code] tags instead of [quote]...[/quote] tags for code and samples

Last edited by Scrutinizer; 03-04-2017 at 08:16 AM.. Reason: Change quote tags into code tags
# 6  
Old 03-03-2017
Quote:
Originally Posted by vgersh99
well.... that tells me that your curl ... | grep ... | cut ... is not returning what you think it's returning.
You need to debug how the htcount is derived.

Oh no, hang on - this doesn't make much sense... the echo "[${htcount}]" is supposed to return the value inside [], but it isn't.
The issue is somewhere else.
Add set -x at the top of your script and see what comes out.
And change

echo "[${htcount}]" to echo "htcount->[${htcount}]"
No. What you're seeing is evidence that the output from the curl command is using DOS <carriage-return><newline> line terminators instead of UNIX <newline> line terminators. The echo output is showing that htcount has been set to "1<cr>" (where <cr> is a carriage return character). Since <cr> is not a numeric character, the test utility is complaining that "${htcount}" expands to a non-numeric string that is not valid in an operand of the binary -ge test operator. Note that an easier way to see this is to use:
Code:
printf '%s' "$htcount" | od -bc

Try adding:
Code:
tr -d '\r'

to the pipeline before or after the grep command.
This User Gave Thanks to Don Cragun For This Post:
# 7  
Old 03-03-2017
@Don: Thank you for the explanation.
Code:
tr -d '\r'


resolved the issue.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Integer expression expected

Hello , This is the piece of the code which is giving me trouble if ;then exit_proc "${SOURCEDIR}/${OUT_FILE} does not exists or not readable" 2 else word_count=`wc -l < ${SOURCEDIR}/$OUT_FILE` fi if ;then exit_proc "Word_count is more than allowed limit" 1 else... (6 Replies)
Discussion started by: Sri3001
6 Replies

2. Shell Programming and Scripting

Integer expression expected

Hi, I am getting the below error while comparing the month of a file to current month. I am using ls -lrth to get the month of that file and while using the if else condition i am getting the below error.. a1=`ls -lrth abc.txt | awk '{print substr($6,1,3)}'` This gives me the month from... (1 Reply)
Discussion started by: jaituteja
1 Replies

3. Shell Programming and Scripting

Integer expression expected

I need some help with this if but then it says line 11: I don't know what I'm doing wrong (1 Reply)
Discussion started by: margg
1 Replies

4. Shell Programming and Scripting

Integer expression expected

Hi, I have placed the script and running successfully on AIX However in Linux it throws integer expression expected Could some one please help me to fix this MaxThreshold4alert=`echo "$MaxCapacitycnt*(80/100)" |bc -l` echo $MaxThreshold4alert Error: 40.00000000000000000000: integer... (2 Replies)
Discussion started by: ajothi
2 Replies

5. Shell Programming and Scripting

Integer expression expected

hi Guys, when i run the below script its showing error "integer expression expected" script pasted below: #!/bin/sh for i in {1..$2} do if then scp server1:/root/file.2012-$1-0$i . else scp server1:/root/file.2012-$1-$i . fi done (8 Replies)
Discussion started by: ganga39
8 Replies

6. Shell Programming and Scripting

Integer expression expected

Newb here echo "$yesterdaysclose" echo "$close" if ; then echo "stocks moving up" elif ; then echo "stock is moving down" else echo "no change" fi seems to evaluate the floating decimal correctly however returns ./shellscript1.sh: line 17: [: : integer expression expected... (3 Replies)
Discussion started by: harte
3 Replies

7. UNIX for Dummies Questions & Answers

Integer Expression Expected!?!?

Ok, so I am beggining a script to factor the time difference from when a user logs on to current time but before I can even get too far I am getting the INTEGER EXPRESSION EXPECTED error. Can someone tell me what I am doing wrong? lhour=$(who | grep "$1" | cut -c30,31); lmin=$(who | grep "$1"... (1 Reply)
Discussion started by: losingit
1 Replies

8. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

9. Shell Programming and Scripting

:integer expression expected

Hi, echo $i until || do read NUM if && ; then printf "$FBOLD\nInvalid number, please enter valid backup number: $FREG" fi done Getting below error : ./import_location.sh: line 234: [: : integer expression expected ./import_location.sh: line 234: [: :... (5 Replies)
Discussion started by: milink
5 Replies

10. Shell Programming and Scripting

Integer Expression Expected

Cannot figure out what the error is on line #10 I was trying to change my login prompt though I've success with that this shows up as well. Here's what I have (1 Reply)
Discussion started by: moonunit
1 Replies
Login or Register to Ask a Question