Visit Our UNIX and Linux User Community


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


Previous Thread | Next Thread
Test Your Knowledge in Computers #617
Difficulty: Medium
If you place two string literals side by side, they are automatically concatenated by Python.
True or False?

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

Featured Tech Videos