Unmatched 'then'


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Unmatched 'then'
# 1  
Old 09-04-2001
Unmatched 'then'

I am having a problem with the following statement in a korn shell script:

if "$all_recs" = "ALL"; then

commands

fi;

I keep getting the error syntax error at line 999 : 'then' unmatched.

I'm sure it is a minor problem, but have been unable to find any answers online. Any help would be appreciated. Also appreciated are any good online sources for korn shell scripting.

Thanks,

Amber Taylor


# 2  
Old 09-04-2001
You should enclose your if statement in square brackets:

Code:
if [ "$all_recs" = "ALL" ]
then
	commands
fi

# 3  
Old 09-04-2001
Thank you for your response.


I made the changes you suggested and now I have the syntax error at line 999 : 'if' unmatched. Now the statement looks like:

if ["$all_recs" = "NEW"] then

commands

fi;

Also, I am coding behind someone and many of the if statements they used do not have the []'s around them. They are formatted like:

if test $# -ne 3;
then

commands

fi;

--or--

if test $file_ext = "file_ext";
then
continue;
fi;

Why would they above work, but not the one I did?

Thanks Again,

Amber Taylor
# 4  
Old 09-04-2001
The answer is simple: you either use the test construction -or- square brackets. Also to keep coding simple and avoid having to use semicolons all the the time to delimit commands, put the several components of the if-then-else-fi construct on separate lines:

Code:
if [ condition ]
then
       command 1
else
       command 2
fi

In your case, you were missing a semicolon just before the 'then'
# 5  
Old 09-04-2001
The use of square brackets is another way
of using the "test" command. Note on the
square brackets... You must have a white
space after the open bracket and before the
close bracket: [ "$somevar" = "somestring" ]

The code: if "$all_recs" = "ALL"; then

...neither had the "test" nor the [ ] and you
need one OR the other.
# 6  
Old 09-04-2001
Smilie Smilie Smilie Smilie

Now I am getting the 'then' unmatched again.

Here is exactly what the statement looks like:

if [ "$all_recs" = "NEW" ]
then

# Flush the staging table
echo "=== Cleaning the staging table..."
sqlplus -s $connect_string > /dev/null << EOF
begin
iws_clean_staging_pkg.iws_clean_staging_prc;
end;
/
EOF
fi;


Is there a man entry for the if statement? If so, what keyword is it under?

Thanks,

Amber Taylor
# 7  
Old 09-04-2001
Also, $all_recs is a command line argument. I don't know if that makes a difference. Thank you for your earlier reply, I would have never known that spaces were needed inside the brackets!

Regards,

Amber Taylor
 
Login or Register to Ask a Question

Previous Thread | Next Thread

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. IP Networking

BELKIN 'F5D5020' 16bit PCMCIA - FreeBSD HOWTO

Hey all, I've bought a few bits from Belkin who seem quite happy to support FreeBSD! Last time I bought a UPS from them and it's still going well :D I saw this on their website that the 16bit PCMCIA card was supported under FreeBSD: http://www.belkin.com/network/F5D5020.html I went to my... (0 Replies)
Discussion started by: WIntellect
0 Replies

5. 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

6. 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

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. 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

10. UNIX for Dummies Questions & Answers

How to subtract 2 hours from 'date' in shell ( /bin/sh ) script ?

I write a sh script that zip and copy to tape all files that older then 2 hours. 1. The way I choose is - touch a file with "now - 2 hours", then use fine with '! -newer' 2. Do you have any other idea to do it ? tnx. (1 Reply)
Discussion started by: yairon
1 Replies
Login or Register to Ask a Question