Visit Our UNIX and Linux User Community


Syntax Error: 'else' is not expected


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Syntax Error: 'else' is not expected
# 1  
Old 11-07-2002
Question Syntax Error: 'else' is not expected

We have a ksh script to insert data into our data warehouse. There are multiple if/then/else statements, most are not embedded. In this example, there is an if/then statement, and an embedded if/then/else/fi statement. The problem occurs with the closing else. I receive an error message as follows...

load.insert.profit.cmt[141]: 0403-057 Syntax error at line 519 : `else' is not expected.

If I open the script in vi and 519j to the line, it is actually an echo statement inside my else.

I have the same if/then/else structure coded above and below line 519 with no errors.

Thanks in advance for your assistance.

Schmitty
# 2  
Old 11-07-2002
If it is possible can you post that portion of your script containing this error... That would be helpful to assist you better.

Cheers!
Vishnu.
# 3  
Old 11-07-2002
In "vi", if the cursor is on the first line and you type "1j" you will find yourself on line number 2, not line number one. Try that.

So your 519j is not going to put you on line 519. To get to line 519 from anywhere in the file, use "519G".
# 4  
Old 11-07-2002
Here's the section of code that I'm having problems with (the second 'else' is what's giving me the problems for now)...

if [ $RETURNCD != 4 ]
then
echo ----
echo ---- Successful Delete of $TABNAME >> $LOGFILE
echo ----
.
.
.
EOF
RETURNCD=$?

###################################
# check the return code from the insert
###################################
if [ $RETURNCD = 4 ]
then
echo +++++
echo +++++Error Inserting into $TABNAME >> $ERRLOG
echo +++++Error Inserting into $TABNAME >> $LOGFILE
echo +++++
else
echo ----
echo ---- Successful Insert into $TABNAME >> $LOGFILE
echo ----
fi
else
echo +++++
echo +++++Error Updating $TABNAME >> $ERRLOG
echo +++++Error Updating $TABNAME >> $LOGFILE
echo +++++
fi

echo \"Commit the INSERT to $TABNAME" >> $LOGFILE
echo ---------------------------------------------- >> $LOGFILE
db2 commit

Note: I do have the if/else statements indented in the actual code if this makes a difference.

Thanks,
Schmitty

Last edited by djschmitt; 11-07-2002 at 05:39 PM..
# 5  
Old 11-07-2002
I can't see anything problematic in the above code, other than this...

echo \"Commit the INSERT to $TABNAME" >> $LOGFILE

shouldn't be

echo "Commit the INSERT to $TABNAME" >> $LOGFILE

As for the else problem, may be there are other control constructs other than the if-then-else-fi s, which lead to some illegal nesting.

Cheers!
Vishnu.
# 6  
Old 11-07-2002
Pull out everything but the ifs, thens and fis.

It goes like this:
if
else
fi
else
fi

You are closing the first "if", then telling it "else".

It looks like you want to make sure the results file updated OK.
Try replacing:
"fi
else"
with:
"fi
if [ "$?" -ne "0" ]; then"

Post back with any more problems...
# 7  
Old 11-12-2002
Quote:
Originally posted by Vishnu
I can't see anything problematic in the above code, other than this...

echo \"Commit the INSERT to $TABNAME" >> $LOGFILE

shouldn't be

echo "Commit the INSERT to $TABNAME" >> $LOGFILE

As for the else problem, may be there are other control constructs other than the if-then-else-fi s, which lead to some illegal nesting.

Cheers!
Vishnu.
I was putting a \ in there for a carriage return. Should I have that put in a separate line?

Previous Thread | Next Thread
Test Your Knowledge in Computers #123
Difficulty: Easy
The Linux kernel code was completely written from scratch.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

What are the differences between 'bash' and 'sh'

Hopefully this doesn't come off as too much of a "newbie" question or a flamebait. But I have recently begun working with a Sun Solaris box after having spent the past five years working with RedHat. From what i can tell, thing look fairly similar and the 'man' command is some help. But I've... (7 Replies)
Discussion started by: deckard
7 Replies

2. UNIX for Advanced & Expert Users

How to remove a file with a leading dash '-' in it's name?

Somehow someone created a file named '-ov' in the root directory. Given the name, the how was probably the result of some cpio command they bozo'ed. I've tried a number of different ways to get rid of it using * and ? wildcards, '\' escape patterns etc.. They all fail with " illegal option --... (3 Replies)
Discussion started by: GSalisbury
3 Replies

3. Email Antispam Techniques and Email Filtering

Procmail recipe: blocking 'unsubscribe and opt-out' messages....

Here is a crude procmail recipe that I quickly created (NOT a procmail recipe expert, btw) that has been catching lots of spam (current second after the charset_spam recipe posted earlier): :0B * .*If.you.do.not.wish.to.receive...* more_spam :0B * You.requested.to.receive.this.mailing... (0 Replies)
Discussion started by: Neo
0 Replies

4. UNIX for Dummies Questions & Answers

quoting echo 'it's friday'

echo 'it's friday' why appear the > (3 Replies)
Discussion started by: yls177
3 Replies

5. Filesystems, Disks and Memory

HELP! The '/var/adm/message' file increase every few seconds???

Hi, guys, I have a big problem. I've got a sun solaris 4.1.4 workstation, and the /var/adm/message file will add one row every few seconds. It soon becomes a large file. I wander if there are some mistakes configuring the workstation. the /var/adm/message is as follow: ... (1 Reply)
Discussion started by: cloudsmell
1 Replies

6. UNIX for Dummies Questions & Answers

'more' error messages

I am receiving the error message when I more to a linked file. filename: Too many levels of symbolic links It is a linked file to one directory up. The other error message I get is when I more to a linked, hidden file. filename: No such file or directory Can the more command not see... (2 Replies)
Discussion started by: mma_buc_98
2 Replies

7. UNIX for Advanced & Expert Users

Terminal 'Local Echo' lost on Modem Dial-out

Can anybody help me? I am developing a utility for automating message paging to a BT alphanumeric pager. I am using a USR 56K Fax-modem connected to /dev/cuab on a Sun Ultra-10. I am using the UNIX 'tip' utility to connect to the modem and I have configured the modem as follows: Baud Rate:... (2 Replies)
Discussion started by: mybeat
2 Replies

8. Shell Programming and Scripting

Clearify what it means under 'WHAT' when hit the 'w'-command

I wonder how I shall read the result below, especially 'what' shown below. The result was shown when I entered 'w'. E.g what is TOP? What is gosh ( what does selmgr mean?)? login@ idle JCPU PCPU what 6:15am 7:04 39 39 TOP 6:34am 6:45 45 45 TOP 6:41am ... (1 Reply)
Discussion started by: Aelgen
1 Replies

9. UNIX for Dummies Questions & Answers

syntax error: `(' unexpected

Hi All, I am trying to run an executable on Sun OS and it gives me following error: syntax error: `(' unexpected On other server this same executable is running fine. Shell on boht server is ksh. Please help! Thanks (11 Replies)
Discussion started by: adadevil
11 Replies

10. Programming

i can't use 'make' in my computer?

I need to compile a file,but 'make' does not work.please tell me how to use it or need which tools? (3 Replies)
Discussion started by: dsun5
3 Replies

Featured Tech Videos