if clause problem ..err is : integer expression expected | Unix Linux Forums | Shell Programming and Scripting

  Go Back    


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

if clause problem ..err is : integer expression expected

Shell Programming and Scripting


Closed Thread    
 
Thread Tools Search this Thread Display Modes
    #1  
Old 10-02-2009
rxg rxg is offline
Registered User
 
Join Date: Oct 2009
Last Activity: 16 May 2013, 10:38 AM EDT
Posts: 15
Thanks: 2
Thanked 0 Times in 0 Posts
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 01:25 PM..
Sponsored Links
    #2  
Old 10-02-2009
clx clx is offline Forum Advisor  
Registered User
 
Join Date: Jun 2007
Last Activity: 17 October 2014, 9:03 AM EDT
Location: Mumbai, India
Posts: 1,614
Thanks: 125
Thanked 184 Times in 178 Posts
try changing below:


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

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

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

Sponsored Links
    #3  
Old 10-02-2009
rxg rxg is offline
Registered User
 
Join Date: Oct 2009
Last Activity: 16 May 2013, 10:38 AM EDT
Posts: 15
Thanks: 2
Thanked 0 Times in 0 Posts
Hi

I have edited my question more specifically ..pls help me .
    #4  
Old 10-02-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmer, author
 
Join Date: Mar 2007
Last Activity: 31 August 2014, 7:32 PM EDT
Location: Toronto, Canada
Posts: 2,877
Thanks: 0
Thanked 110 Times in 102 Posts
Quote:
Originally Posted by rxg View Post
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]
Sponsored Links
    #5  
Old 10-03-2009
methyl methyl is offline Forum Advisor  
Advisor
 
Join Date: Mar 2008
Last Activity: 18 April 2014, 5:13 AM EDT
Posts: 6,396
Thanks: 287
Thanked 673 Times in 642 Posts
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`
Sponsored Links
    #6  
Old 10-04-2009
ahmad.diab's Avatar
ahmad.diab ahmad.diab is offline
Registered User
 
Join Date: May 2008
Last Activity: 7 October 2014, 7:38 AM EDT
Location: Amman Jordan in MEA
Posts: 645
Thanks: 2
Thanked 19 Times in 19 Posts

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

Sponsored Links
Closed Thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
integer expression expected error crontab only unclecameron Shell Programming and Scripting 2 09-16-2009 12:43 PM
Integer Expression Expected moonunit Shell Programming and Scripting 1 03-04-2009 04:38 PM
error "integer expression expected" when selecting values jorlando Shell Programming and Scripting 4 12-10-2008 03:31 PM
integer expression expected error dark_knight Shell Programming and Scripting 2 10-15-2008 11:07 AM
warning: integer overflow in expression tantric Programming 1 06-25-2007 11:38 PM



All times are GMT -4. The time now is 03:54 PM.