LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 09-18-2013, 12:27 AM   #1
spkraja3
LQ Newbie
 
Registered: Sep 2013
Posts: 4

Rep: Reputation: Disabled
syntax error near unexpected token `else'


Hi Everyone,
Please let me know what is missing in this Script.


do_precheck()
{
lock_user;
lockuser=$?;export lockuser; echo "Lockuser Return Code is :- $lockuser " > /tmp/ReturnCode.log
if [ lockuser -eq 0 ] then
{
kill_session;
killsession=$?;export killsession ;echo " Kill Session Return Code is :- $killsession" >> /tmp/ReturnCode.log
if [ killsession -eq 0 ] then
{
do_delete_before_import;
deletebeforeimport=$?;export deletebeforeimport ;echo " Delete Before Import return Code is :-$deletebeforeimport" >> /tmp/ReturnCode.log
if [ deletebeforeimport -eq 0 ] then
{
do_unzip_before_import ;
unzip=$?;export unzip;echo " Unzip Operation Return Code is :- $unzip" >> /tmp/ReturnCode.log
if [unzip -eq 0 ] then
{
generate_drop_user;
dropuser=$?; export dropuser;echo " Drop User Operation Return Code is :- $dropuser " >> /tmp/ReturnCode.log
if [dropuser -eq 0 ] then
{
create_blankuser;
blankuser=$?;export blankuser; echo " Create Blank User User Operation Return Code is :- $blankuser " >> /tmp/ReturnCode.log
if [blankuser -eq 0 ] then
{
echo "Blank User Creation Successful "
}
else
echo " Create Blank User Operation Failed " > /tmp/status.log
exit
}
fi
else
echo " Drop user Failed " > /tmp/status.log
}
fi
else
echo "Unzip Operation Failed " > /tmp/status.log
}
fi
else
echo "deletebeforeimport Steps Failed " > /tmp/status.log
exit
}
fi
else
echo "Killing the Session of User Failed " > /tmp/status.log
exit
}
fi
else
echo "Locking the USER Failed " > /tmp/status.log
exit
}
fi


Error :-
DataPumpExport.ksh: line 173: syntax error near unexpected token `else'
DataPumpExport.ksh: line 173: ` else

Last edited by spkraja3; 09-18-2013 at 12:46 AM.
 
Old 09-18-2013, 12:46 AM   #2
colucix
LQ Guru
 
Registered: Sep 2003
Location: Bologna
Distribution: CentOS 6.5 OpenSuSE 12.3
Posts: 10,509

Rep: Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983
Code:
if [ lockuser -eq 0 ] then
should be
Code:
if [ lockuser -eq 0 ]; then
or
Code:
if [ lockuser -eq 0 ]
then
either with a semi-colon before "then" or in a new line.
 
Old 09-18-2013, 12:55 AM   #3
pan64
LQ Addict
 
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 21,830

Rep: Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308
probably: if [ "$lockuser" -eq 0 ]; then
( space after [, use $ and " )
but it should be fixed several times

Last edited by pan64; 09-18-2013 at 12:57 AM.
 
Old 09-18-2013, 01:16 AM   #4
spkraja3
LQ Newbie
 
Registered: Sep 2013
Posts: 4

Original Poster
Rep: Reputation: Disabled
Thanks for the Response colucix / pan64,
After Changing

do_precheck()
{
lock_user;
lockuser=$?;export lockuser; echo "Lockuser Return Code is :- $lockuser " > /tmp/ReturnCode.log
if [ lockuser -eq 0 ]; then
{
kill_session;
killsession=$?;export killsession ;echo " Kill Session Return Code is :- $killsession" >> /tmp/ReturnCode.log
if [ killsession -eq 0 ]; then
{
do_delete_before_import;
deletebeforeimport=$?;export deletebeforeimport ;echo " Delete Before Import return Code is :-$deletebeforeimport" >> /tmp/ReturnCode.log
if [ deletebeforeimport -eq 0 ]; then
{
do_unzip_before_import ;
unzip=$?;export unzip;echo " Unzip Operation Return Code is :- $unzip" >> /tmp/ReturnCode.log
if [unzip -eq 0 ]; then
{
generate_drop_user;
dropuser=$?; export dropuser;echo " Drop User Operation Return Code is :- $dropuser " >> /tmp/ReturnCode.log
if [dropuser -eq 0 ]; then
{
create_blankuser;
blankuser=$?;export blankuser; echo " Create Blank User User Operation Return Code is :- $blankuser " >> /tmp/ReturnCode.log
if [blankuser -eq 0 ]; then
{
echo "Blank User Creation Successful "
}
elif
echo " Create Blank User Operation Failed " > /tmp/status.log
exit
}
fi
else
echo " Drop user Failed " > /tmp/status.log
}
fi
else
echo "Unzip Operation Failed " > /tmp/status.log
}
fi
else
echo "deletebeforeimport Steps Failed " > /tmp/status.log
exit
}
fi
else
echo "Killing the Session of User Failed " > /tmp/status.log
exit
}
fi
else
echo "Locking the USER Failed " > /tmp/status.log
exit
}
fi

Error:-

DataPumpExport_test.ksh: line 174: syntax error near unexpected token `}'
DataPumpExport_test.ksh: line 174: ` }'
 
Old 09-18-2013, 01:19 AM   #5
pan64
LQ Addict
 
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 21,830

Rep: Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308
please use [code]here comes your script[/code] to keep formatting.

You need to check the pairs of { and }
 
Old 09-18-2013, 01:46 AM   #6
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405
@spkraja3: Why the need for all the curly brackets? They are needed for function declaration and looking at the posted code I see only one function that's declared.
Code:
do_precheck() {
  # lock user part
  lock_user;
  lockuser=$?;export lockuser; echo "Lockuser Return Code is :- $lockuser " > /tmp/ReturnCode.log
  if [ lockuser -eq 0 ]; then
    # kill session part
    kill_session;
    killsession=$?;export killsession ;echo " Kill Session Return Code is :- $killsession" >> /tmp/ReturnCode.log
    if [ killsession -eq 0 ]; then
      # do_delete_before_import part
      do_delete_before_import;
      deletebeforeimport=$?;export deletebeforeimport ;echo " Delete Before Import return Code is :-$deletebeforeimport" >> /tmp/ReturnCode.log
      if [ deletebeforeimport -eq 0 ]; then
        .
        .
        .
      fi
    fi
  fi
}
If readability is an issue then use comments or blank lines to separate the sections. This link might help with your scripting style/readability: Scripting with style
 
Old 09-18-2013, 02:00 AM   #7
spkraja3
LQ Newbie
 
Registered: Sep 2013
Posts: 4

Original Poster
Rep: Reputation: Disabled
Hi,
This is my full script

#!/usr/bin/ksh
#--------------------------------------------------------------------------------------------------------------------
#ScriptataPumpExport.ksh
#Author:
#Date : 31-Jul-2013
#Purpose: This script exports a Schema export using expdp and refreshes the Schema using the Latest Backup from Production
#--------------------------------------------------------------------------------------------------------------------

host_name=`hostname`
#MAIL_TO=
vschemas=$1
MAIL_TO=deepak.punjabi@sungard.com
BIN_DIR=/export/home/oracle/admin/KEOMSDB/scripts;export BIN_DIR
. /export/home/oracle/varenvKEOMSDB.sh
SID=`echo $SID|tr 'a-z' 'A-Z'`
drpusersql=/tmp/dropuser_`date "+Date=%d-%m-%y;Time=%T"`.sql;export drpusersql;
drpuserslog=/tmp/dropuser_`date "+Date=%d-%m-%y;Time=%T"`.log;export drpuserslog;
createusersql=/export/home/oracle/admin/KEOMSDB/scripts/createuser.sql;export createusersql
createuserlog=/tmp/dropuser_`date "+Date=%d-%m-%y;Time=%T"`.log;export createuserlog;
get_export_dir_path()
{
sqlplus -s "/ as sysdba"<<EOFF
set pages 0 echo off feed off verify off lines 150
select DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='WEEKLY_EXPORT';
EOFF
}
do_export()
{
edisplay=`date "+Date=%d-%m-%y;Time=%T"`
echo "Exported Started at: $edisplay"
echo "Database Name : $ORACLE_SID"
epost_fix=`date "+%Y%m%d%H%M%S"`;export epost_fix;
edir_path=`get_export_dir_path`
echo "Dumpfile directory: $edir_path"
edumpfile=expdp_SAFE_${ORACLE_SID}_${epost_fix}_%U.dmp
ejobname=expdp_SAFE_${ORACLE_SID}_${epost_fix}
elogfile=expdp_SAFE_${ORACLE_SID}_${epost_fix}.log
expdp \"/ as sysdba\" schemas=$vschemas job_name=${ejobname} directory=WEEKLY_EXPORT DUMPFILE=${edumpfile} FILESIZE=20G logfile=${elogfile}
cd $dir_path
error_count=`egrep "ORA-|EXP-" $elogfile|grep -v grep |wc -l`
if [ ${error_count} -gt 0 ]; then
rm -f "*${epost_fix}*.dmp"
df -k >>${elogfile}
# ${BIN_DIR}/SendMail.ksh -s "${NE_REGION}:${SID}: Full datapump export (FAILURE)" -b ${logfile} -e "${MAIL_TO}"
exit
fi

set -x
for filex in *${epost_fix}*.dmp
do
if [ -f $filex ]; then
gzip -c $filex > $filex.gz
ret_code=$?
if [ $ret_code -ne 0 ]; then ##Delete Zip files if Zip is not Successful
rm -f *${epost_fix}*.gz
df -h >>${elogfile}
echo " Zip of DumpFiles is Not Successful " >>${elogfile}
exit
fi
echo "Safe Export and Gip of Dumpfiles for OMS Schema Completed Successfully" >>${elogfile}
exit
fi
done
}
do_export
get_import_dir_path()
{
sqlplus -s "/ as sysdba"<<EOFF
set pages 0 echo off feed off verify off lines 150
select DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='WEEKLY_IMPORT';
EOFF
}
lock_user() ## Function To Create a Dynamic Script in /tmp to lock the users to be refreshed
{
sqlplus -s "/ as sysdba"<<EOFF
set pages 0 echo off feed off verify off lines 150
spool /tmp/lock_user.sql
select 'alter user '||username||' account lock ;' from dba_users where username in ('$vschemas');
set pages 1000 lines 120 feed on echo on verify on
spool /tmp/lock_user.log
@/tmp/lock_user.sql
spool off
EOFF
}
kill_session()
{
sqlplus -s "/ as sysdba"<<EOFF
set pages 0 echo off feed off verify off lines 150
spool /tmp/kill_session.sql
select '!kill -9 '||p.spid||chr(10)||'alter system kill session '''||s.sid||','||s.serial#||''' immediate;'from v\$session s,v\$process p where s.USERNAME in ('$vschemas') and s.username is not null and s.paddr=p.addr and s.status in ('INACTIVE','ACTIVE');
spool off
set pages 1000 lines 120 feed on echo on verify on
spool /tmp/kill_session.log
@/tmp/kill_session.sql
spool off
EOFF
}
do_delete_before_import()
{

idir_path=`get_import_dir_path`
idisplay=`date "+Date=%d-%m-%y;Time=%T"`
echo "Dumpfiles and Logfiles Deleted on : $idisplay">>${idir_path}/deleted_dumpfile.log
echo "***************************************************************">>${idir_path}/deleted_dumpfile.log
find ${idir_path} -type f -name "*.dmp" -print >>${idir_path}/deleted_dumpfile.log
find ${idir_path} -type f -name "*.dmp" -exec rm {} \;
#exit
}
do_delete_before_import
do_unzip_before_import()
{
idir_path=`get_import_dir_path`
idisplay=`date "+Date=%d-%m-%y;Time=%T"`
ipost_fix_search=`date "+%Y%m%d"`;
echo " Zip Dumpfiles Used for Refresh : $post_fix_search">>$dir_path/dumpfile_used_forrefresh.log
find $idir_path -type f \( -name "*$ipost_fix_search*.gz" \) -print >>$idir_path/dumpfile_used_forrefresh.log
find $idir_path -type f \( -name "*$ipost_fix_search*.gz" \) -exec gunzip {} \;
idumpfiles=`ls *${ipost_fix_search}.dmp|paste -sd ","`
export idumpfiles
}
generate_drop_user()
{
sqlplus -s "/ as sysdba"<<EOFF
set pages 0 echo off feed off verify off lines 150
spool ${drpusersql}
select 'drop user '||username||' cascade;' from dba_users where USERNAME in ('TEST');
spool off
set pages 1000 lines 120 feed on echo on verify on
spool ${drpuserslog}
@${drpusersql}
spool off
EOFF
}
create_blankuser()
{
sqlplus -s "/ as sysdba"<<EOFF
set pages 1000 lines 120 feed on echo on verify on;
spool ${createuserlog}
@${createusersql}
spool off
EOFF
}
do_precheck()
{
lock_user;
lockuser=$?;export lockuser; echo "Lockuser Return Code is :- $lockuser " > /tmp/ReturnCode.log
if [ "$lockuser" -eq 0 ]; then
kill_session;
killsession=$?;export killsession ;echo " Kill Session Return Code is :- $killsession" >> /tmp/ReturnCode.log
if [ "$killsession" -eq 0 ]; then
do_delete_before_import;
deletebeforeimport=$?;export deletebeforeimport ;echo " Delete Before Import return Code is :-$deletebeforeimport" >> /tmp/ReturnCode.log
if [ "$deletebeforeimport" -eq 0 ]; then
do_unzip_before_import;
unzip=$?;export unzip;echo " Unzip Operation Return Code is :- $unzip" >> /tmp/ReturnCode.log
if [ "$unzip" -eq 0 ]; then
generate_drop_user;
dropuser=$?; export dropuser;echo " Drop User Operation Return Code is :- $dropuser " >> /tmp/ReturnCode.log
if [ "$dropuser" -eq 0 ]; then
create_blankuser;
blankuser=$?;export blankuser; echo " Create Blank User User Operation Return Code is :- $blankuser " >> /tmp/ReturnCode.log
if [ "$blankuser" -eq 0 ]; then
echo "Blank User Creation Successful "
fi
else
echo " Create Blank User Operation Failed " > /tmp/status.log
exit
fi
else
echo " Drop user Failed " > /tmp/status.log
exit
fi
else
echo "Unzip Operation Failed " > /tmp/status.log
exit
fi
else
echo "deletebeforeimport Steps Failed " > /tmp/status.log
exit
fi
else
echo "Killing the Session of User Failed " > /tmp/status.log
exit
fi
else
echo "Locking the USER Failed " > /tmp/status.log
exit
}


do_import()
{

ipost_fix=`date "+%Y%m%d%H%M%S"`;
idir_path=`get_import_dir_path`
ijobname=impdp_${ORACLE_SID}_${ipost_fix}
ilogfile=impdp_${ORACLE_SID}_${ipost_fix}.log

## lock_user; -- Lock the User
## kill_session; -- Kill the Session
## do_delete_before_import; -- Delete the Earlier Unwanted Dumpfiles .
## do_unzip_before_import; -- Unzip the Dumpfile for Refresh
## generate_drop_user; -- Generates Drop User sql file in /tmp and Drops the Required User.
## create_blankuser; -- Creates Blank User.Hardcoded with /export/home/oracle/admin/KEOMSDB/scripts/createuser.sql

do_precheck();
precheck=$?
if [precheck -eq 0 ]; then
{
impdp \"/ as sysdba\" schemas=$vschemas job_name=${impjobname} directory=$impdir DUMPFILE=${dmpfilesforimport} FILESIZE=20G logfile=${implogfile}
cd $dir_path
error_count=`egrep "ORA-|EXP-" $implogfile|grep -v grep |wc -l`
if [ ${error_count} -gt 0 ]; then
{
df -k >>${implogfile}
mail -s " Import of ${vschemas} has Errors.Please check the attached Logfile " < ${implogfile}
exit
}
else
{
df -k >>${implogfile}
mail -s " Import of ${vschemas} has Completed Successful. Please check the attached Logfile " < ${implogfile}
exit
}
fi
}
else
{
mail -s " Import of ${vschemas} has Not been Started.Some of the Prechecks Failed." < /tmp/status.log
exit
}
fi

error :-
DataPumpExport_test.ksh: line 185: syntax error near unexpected token `else'
DataPumpExport_test.ksh: line 185: `else'


Thanks for all your help.

Last edited by spkraja3; 09-18-2013 at 02:02 AM.
 
Old 09-18-2013, 02:18 AM   #8
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405
@spkraja3: You really need to put [code] ... [/code] tags around your code when posting here (which was already pointed out to you by pan64).
 
Old 09-18-2013, 02:22 AM   #9
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405Reputation: 2405
@spkraja3: It looks like your if - then - else - fi combo's aren't complete.

The else on line 185 doesn't belong to any previous if. I also don't see a closing fi (assuming the else does belong to a missing if).
 
Old 09-18-2013, 02:28 AM   #10
pan64
LQ Addict
 
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 21,830

Rep: Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308
for better readability you should avoid such embedded ifs. Usually you need only invert those conditions and you will be able to create a straightforward implementation.
Code:
if <condition1> then
  something1
  exit or return

# no need to do "else" branch
if <condition2> then
  something2
  exit or return

...
 
Old 09-18-2013, 03:23 AM   #11
spkraja3
LQ Newbie
 
Registered: Sep 2013
Posts: 4

Original Poster
Rep: Reputation: Disabled
Thanks for all your help saved my day...
 
Old 09-18-2013, 03:28 AM   #12
pan64
LQ Addict
 
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 21,830

Rep: Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308Reputation: 7308
glad to help you. If you really want to say thanks just press yes
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
syntax error near unexpected token `else' dnaqvi Linux - General 5 12-08-2010 03:37 AM
Syntax error near unexpected token jchmski Programming 5 06-18-2010 10:28 AM
sh: syntax error near unexpected token `(' venkatesh_b Linux - Newbie 1 05-16-2009 05:44 AM
Syntax error near unexpected token fi Nortekman Linux - Newbie 8 02-27-2009 03:48 PM
syntax error near unexpected token ` mattyspatty Programming 8 05-07-2006 05:19 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 10:26 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration