if clause problem ..err is : integer expression expected


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting if clause problem ..err is : integer expression expected
# 1  
Old 10-02-2009
Question if clause problem ..err is : integer expression expected

Hi

pls help me with this if clause , which is marked in red .

It gives me an error saying :-
: integer expression expected
and it goes to the else part and writes output the WARNING STATEMENTS ..
the values of if [ "$rcInPAudit" = "$rcInP" ]; then
rcInPAudit and rcInP match each other exactly ..but it does not go the if part and gives an error (saying integer expression expected )

The script runs good till the above mentioned if clause ,
and also it prints out :-
Number of Records in ProGV file = 34
Number of Rows Copied into PROGV = 34

proGVshell.sh: [: 34
: integer expression expected


Pls help ..
thanks ..rxg

HTML Code:
 
#************************************************************************#
#*************** CHECKING THE BCP STATUS ********************************#
# this  writes the output from the bcp in  into the  OUTPUT.out file #
#************************************************************************#
echo
echo '*** NEXT LINES ARE OUTPUT FROM  BCP IN PROGV TABLE***'
cat bcpinprovmsg.out
echo
# this checks for bcp in  failure message
bcpinprov=`grep -i "bcp copy in failed" bcpinprovmsg.out`
if [ "$bcpinprov" = "" ]; then
   echo "BCP COPY IN PROGV SUCCEEDED"
   # this routine returns the number of rows in GV
   # and assigns it to  rcInP variable     
   rowsInProv=`grep -h "Number of rows in PROGV" $RUNDIR/OUTPUT.out` 
      count=1
      for i in $rowsInProv
      do
        if  [ $count -eq 6 ]; then
          rcInP=$i   
        fi
        count=`expr $count + 1`
      done
      
   rowsInProvAudit=0
   rowsInProvAudit=`grep -h "Number of records written for  PROGV
bcp:" $MMISDIR/Provider_Audit.log` 
   echo $rowsInProvAudit
          countP=1
        for i in $rowsInProvAudit
        do
         if [ $countP -eq 8 ]; then
          rcInPAudit=$i
         fi
         countP=`expr $countP + 1` 
        done
              
   echo "Number of Records in  ProGV file = " $rcInPAudit  
   echo "Number of Rows Copied into PROGV= " $rcInP    
   
         
  if [ "$rcInPAudit" = "$rcInP" ]; then
         echo 'correct number of rows were loaded into PROVIDER'  
  else                                                                
       echo '*** WARNING *** WARNING *** WARNING *** WARNING ***'         
       echo '  Discrepancy between number of records in PROGV.txt ' 
       echo '  and number of rows loaded into PROGV. Check bcp'
       echo '  load statistics and ProvLoadInErr.out file.'
       echo
       if [ -r ProvLoadInErr.out ]; then
          echo '*** REJECTED ROWS FROM BCP OF PROGV.txt ***'
          cat ProvLoadInErr.out
       fi
           SUBJECT=""$runat"-ProGV_Processing_OfRows:Error"
           mailx -s $SUBJECT $MAILTOPROG < $RUNDIR/OUTPUT.out
           exit
  fi
else
     SUBJECT=""$runat"-ProGV_Processing_OfRows:Error"
     mailx -s $SUBJECT $MAILTOPROG < $RUNDIR/OUTPUT.out
     exit
fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Last edited by rxg; 10-02-2009 at 02:25 PM..
# 2  
Old 10-02-2009
try changing below:

Code:
if [ ! "$bcpinprov" ]; then

if  [ "$count" -eq 6 ]; then

 if [ "$countP" -eq 8 ]; then

# 3  
Old 10-02-2009
Hi

I have edited my question more specifically ..pls help me .
# 4  
Old 10-02-2009
Quote:
Originally Posted by rxg
Hi

pls help me with this if clause , which is marked in red .

It gives me an error saying :-
[FONT=Courier][SIZE=2][FONT=Courier][SIZE=2]: integer expression expected
and it goes to the else part and writes output the WARNING STATEMENTS ..
the values of if [ "$rcInPAudit" = "$rcInP" ]; then
rcInPAudit and rcInP match each other exactly ..but it does not go the if part and gives an error (saying integer expression expected )

That if statement could not generate that error. The problem is elsewhere.
Quote:
[/HTML]

Why are you using an HTML tag for a shell script? Use [CODE]
# 5  
Old 10-03-2009
This line may upset the script because there is a line break mid-line.

Quote:
rowsInProvAudit=`grep -h "Number of records written for PROGV
bcp:" $MMISDIR/Provider_Audit.log`
# 6  
Old 10-04-2009
Code:
A binary comparison operator compares two variables or quantities. Note that integer and string comparison
use a different set of operators.
integer comparison
-eq
is equal to
if [ "$a" -eq "$b" ]
-ne
is not equal to
if [ "$a" -ne "$b" ]
-gt
is greater than
if [ "$a" -gt "$b" ]
-ge
is greater than or equal to
if [ "$a" -ge "$b" ]
-lt
is less than
if [ "$a" -lt "$b" ]
-le
is less than or equal to
if [ "$a" -le "$b" ]

<
is less than (within double parentheses)
(("$a" < "$b"))
<=
is less than or equal to (within double parentheses)
(("$a" <= "$b"))
>
is greater than (within double parentheses)
(("$a" > "$b"))
>=
is greater than or equal to (within double parentheses)
(("$a" >= "$b"))
string comparison
=
is equal to
if [ "$a" = "$b" ]
==
is equal to
if [ "$a" == "$b" ]

!=
is not equal to
if [ "$a" != "$b" ]
This operator uses pattern matching within a [[ ... ]] construct.
<
is less than, in ASCII alphabetical order
if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]
Note that the "<" needs to be escaped within a [ ] construct.
>
is greater than, in ASCII alphabetical order
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
Note that the ">" needs to be escaped within a [ ] construct.


in conclusion (using bash or ksh shells) :-
you are testing 2 numerical variables (numbers) you have to use the first kind of operators (-eq) not the string operator
you can use the string operator in double parentheses ( [[..]] )

so use [[ "$rcInPAudit" = "$rcInP" ]] or [ "$rcInPAudit" -eq "$rcInP" ] to eliminate the error.

BR

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