./TRUNCATE-PS_TXN.sh: line 54: syntax error: unexpected end of file

Hi All ,

My below script is for chacking vaule and then trucating table :
___________

test4@aceuatcs04:/u01/test4/SOLID/Testscript>cat TRUNCATE-PS_TXN.sh 
#--------------------------------------------------------------------
#  Created by:Kaushlesh Yadav
#  Generated on: 15/07/2010
#  Job name : TRUNCATE-PS_TXN Table in C & S 
#  Job description: Truncate Queries
# ----------------------------------------------------------------------
#
#
#!bin/bash
 
 
export ats_csd_table=`sqlplus -s $USER/$USER@$USER <<EOF
        set heading off feedback off verify off
        SELECT ATS_DATE||'|'||CSD_DATE||'|'||SYSTEM_STATUS FROM ATS_CSD_STATUS;
    exit
EOF
`
export p_date_event=`sqlplus -s $USER\cs/$USER\cs@$USER <<EOF
        set heading off feedback off verify off
        SELECT P_DATE||'|'||PARA_NUMBER FROM P_DATES D,P_NUMBERS N WHERE UPPER(D.DESCRIPTION) = UPPER('APPLICATION DATE') and UPPER(N.PARA_CODE) = UPPER('EVENT');      
        exit
EOF
`
export ats_status=`echo ${ats_csd_table}|cut -d '|' -f3`
export p_event=`echo ${p_date_event}|cut -d '|' -f2`
export Systemstate=''
export SPOOLFILE=$HOME/logs/PS_TXN.txt
if [ {${p_event} = '3500'} -a ${ats_status} = '7' ] ;then
     USERCS=$USER\cs
     CSPASS=$CS_DB_STRING
     echo "Now processing step: LOAD_"
     DB_CONNECT="$USERCS/$CSPASS@$USER"
     SPOOLFILE=$HOME/logs/PS_TXN.txt
     echo "Now processing step:" $DB_CONNECT
     sqlplus -s ${DB_CONNECT} <<EOF
     spool ${SPOOLFILE}
     whenever oserror exit sql.sqlcode
     whenever sqlerror exit sql.sqlcode
     SET SERVEROUTPUT ON SIZE 1000000 FORMAT WRAPPED
     declare
     begin
     DBMS_OUTPUT.PUT_LINE('Started;');
     EXECUTE IMMEDIATE 'TRUNCATE TABLE PS_TXN';
     End;
     /
     EOF
    exit                        
                
else   
     Systemstate='Exchange and Clearing systems are not in Sync'
         echo ${Systemstate}  >> ${SPOOLFILE}
fi
exit

____________

if i will run as

./TRUNCATE-PS_TXN.sh 
then error: ./TRUNCATE-PS_TXN.sh: line 54: syntax error: unexpected end of file

If run as : sh -xv TRUNCATE-PS_TXN.sh

Below process:-

#
#!bin/bash
 
 
export ats_csd_table=`sqlplus -s $USER/$USER@$USER <<EOF
        set heading off feedback off verify off
        SELECT ATS_DATE||'|'||CSD_DATE||'|'||SYSTEM_STATUS FROM ATS_CSD_STATUS;
    exit
EOF
`
+ sqlplus -s test4/test4@test4 
        set heading off feedback off verify off
        SELECT ATS_DATE||'|'||CSD_DATE||'|'||SYSTEM_STATUS FROM ATS_CSD_STATUS;
    exit
+ export ats_csd_table= 21/06/2010|21/06/2010|7 
TRUNCATE-PS_TXN.sh: ats_csd_table=: is not an identifier

________________

Please let me know how i can solve the issue.

There is a typo in your shebang line.

#!/bin/bash

And one of your "EOF" lines is still indented.

egrep "EOF" scriptname
export ats_csd_table=`sqlplus -s $USER/$USER@$USER <<EOF
EOF
export p_date_event=`sqlplus -s $USER\cs/$USER\cs@$USER <<EOF
EOF
     sqlplus -s ${DB_CONNECT} <<EOF
     EOF
export ats_csd_table=`sqlplus -s $USER/$USER@$USER <<EOF
EOF

Thanks For replying , i have changed but the same error is coming.

The more I look the more I see.
Btw. Which Shell are you actually using - "sh" or "bash" ?

From your Shell trace:

This generated command is invalid because there are pipe characters which are being interpreted by the Shell and because there is a space character after the equals sign.

I'm finding the first SELECT statment too difficult to follow, but it may simply be a case of choosing a different delimiter (say a comma) and ensuring that the output does not contain leading space characters. However, mixing Oracle sql and unix Shell can be hard work but it is much much easier if you send the output of the Oracle program to a file rather than to a unix environment variable.

Footnote: Spotted another anomaly. The "exit" line after the indented "EOF" is probably misplaced and will exit the script rather than exit sqlplus.

Bash shell.

---------- Post updated at 07:50 PM ---------- Previous update was at 07:16 PM ----------

Hi ,

Last one exit i have used for coming out of the script itself if the statment is procedure run properley.