![]() |
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
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 01:43 PM |
| Integer Expression Expected | moonunit | Shell Programming and Scripting | 1 | 03-04-2009 05:38 PM |
| error "integer expression expected" when selecting values | jorlando | Shell Programming and Scripting | 4 | 12-10-2008 04:31 PM |
| integer expression expected error | dark_knight | Shell Programming and Scripting | 2 | 10-15-2008 12:07 PM |
| warning: integer overflow in expression | tantric | High Level Programming | 1 | 06-26-2007 12:38 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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.. |
|
|||||
|
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
|
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|