Case Statement Troubles


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Case Statement Troubles
# 1  
Old 02-01-2012
Case Statement Troubles

Hi,
I'm attempting to create case statement in a ksh script that does the following:

Run a uname command against the box and use that value for $HOSTNAME object. Then, if hostname has AIX in it, then use the lsldap command to try to bind, then print $HOSTNAME:yes or $HOSTNAME:no, depending on bind results. Then, if AIX wasn't in the $HOSTNAME, look for RHEL and do the same. It keeps errororing and I have tried so many examples and beat my head against it for so long I thought maybe someone with more experience could help.

Here's the script:
Code:
HOSTNAME=$(uname -n)

cd /tmp

echo "Line to catch HHLD Connectivity status"

case ${HOSTNAME} in

[AIX]*) 
	lsldap -a passwd rzttwp > /dev/null 2>&1
ret=$?
 
if [ $ret -ne 0 ]; then
	echo "!!!:${HOSTNAME}:no"
	    else
	echo "!!!:${HOSTNAME}:yes"
	

[RHEL]*)
	getent passwd rzttwp > /dev/null 2>&1    
ret=$?
 
if [ $ret -ne 0 ]; then
	echo "!!!:${HOSTNAME}:no"
	    else
	echo "!!!:${HOSTNAME}:yes"

I've tried it with and without the *), with and without ;; in between the :yes" and [RHEL]*), tried using |, tried all kinds of permutations. It keeps erroring out. I'm trying to run this on RHEL5.3.

Any help, insights, or pointers you may be able to provide is greatly appreciated!

Thank you,

D

Last edited by Scott; 02-01-2012 at 04:31 PM.. Reason: Please use code tags
# 2  
Old 02-01-2012
Is this the entire script? If so, I don't see the end of the case statement:

Code:
case 

      code

esac

This User Gave Thanks to in2nix4life For This Post:
# 3  
Old 02-01-2012
Usual requests.
Please post sample output from "uname -n" for your variety of servers.

General answer:
Code:
case "<variable_to_test>" in
         "value1") 
                  # commands
         ;;
         "value2")
                  # commands
         ;;
         "value3")
                  # commands
         ;;
         *)
                  # commands to deal with whatever is left
         ;;
esac

Based on you previous posts, have you considered attending a training course?


Ps. "It keeps erroring" is of no use to technical support persons. You need to describe your environment (O/S and Shell etc.) and show what you typed, what you expected you happen and what actually happened. Otherwise you may be depicted as someone who rides a horse and lassos wild animals.

Imho. Persons who type random commands to try to beat syntax errors should be locked out. Yep it's been a bad day!

Last edited by methyl; 02-01-2012 at 04:54 PM.. Reason: not enough quotes
This User Gave Thanks to methyl For This Post:
# 4  
Old 02-01-2012
I added that, it still errors out on line 49, which is where the [RHEL]*) is. It looks like this now:
Code:
HOSTNAME=$(uname -n)

cd /tmp

echo "Line to catch HHLD Connectivity status"

case ${HOSTNAME} in

[AIX]*) 
	lsldap -a passwd rzttwp > /dev/null 2>&1
ret=$?
 
if [ $ret -ne 0 ]; then
	echo "!!!:${HOSTNAME}:no"
	    else
	echo "!!!:${HOSTNAME}:yes"
	

[RHEL]*)
	getent passwd rzttwp > /dev/null 2>&1    
ret=$?
 
if [ $ret -ne 0 ]; then
	echo "!!!:${HOSTNAME}:no"
	    else
	echo "!!!:${HOSTNAME}:yes"

esac

---------- Post updated at 02:45 PM ---------- Previous update was at 02:41 PM ----------

Update: I removed the * signs from in front of ) signs and still get error: syntax error at line 49: `)' unexpected


so it's still buggy lol

---------- Post updated at 02:47 PM ---------- Previous update was at 02:45 PM ----------

@methyl: Yes, I have and am definitely in need of training. I am doing this for work because they need someone to do it, I'm the lucky guy. It's not somehting I usually do and I don't have time to take training right away...I do need it tho I agree.

---------- Post updated at 02:55 PM ---------- Previous update was at 02:47 PM ----------

I am making edits using notepad++ and just using WinSCP to push the edited script back up, so not vi on server. The machine OS is RHEL 5.3. The error is syntax...here's a good example: syntax error at line 46: `;;' unexpected

With this code:

Code:
HOSTNAME=$(uname -n)

cd /tmp

echo "Line to catch HHLD Connectivity status"

case ${HOSTNAME} in
	[AIX]) 
		lsldap -a passwd rzttwp > /dev/null 2>&1
	ret=$?
 
	if [ $ret -ne 0 ]; then
		echo "!!!:${HOSTNAME}:no"
			else
		echo "!!!:${HOSTNAME}:yes"
	;;
	[RHEL])
		getent passwd rzttwp > /dev/null 2>&1    
	ret=$?
 
	if [ $ret -ne 0 ]; then
		echo "!!!:${HOSTNAME}:no"
			else
		echo "!!!:${HOSTNAME}:yes"
	;;
esac

---------- Post updated at 02:56 PM ---------- Previous update was at 02:55 PM ----------

Line 46 is above the RHEL part

Last edited by methyl; 02-01-2012 at 05:12 PM.. Reason: Please learn about code tags....; and more code tags
# 5  
Old 02-01-2012
The problem isn't the * symbols. The problem is that you're not following the syntax, at all.

If statements work like this:

Code:
if SOMETHING
then
...
else
...
fi

Case statements work like

Code:
case SOMETHING in
case1)
        statement
        ;;
case2)
        statement
        ;;
case3)
        statement
        ;;
esac

You're forgetting fi's and ;;'s all over the place. They're not optional.
This User Gave Thanks to Corona688 For This Post:
# 6  
Old 02-01-2012
Another fundamental of unix Bourne Shell scripting:

Code:
if [ condition ]
then
        #do something
fi

I'm becoming more sarcastic by the minute. (Big smile on face and no vitriol intended).

While I'm being sarcastic:
Quote:
syntax error at line 46: `;;' unexpected
When you post 26 lines, we do wonder where the error message came from.

Last edited by methyl; 02-01-2012 at 05:16 PM..
This User Gave Thanks to methyl For This Post:
# 7  
Old 02-01-2012
To repeat.
Quote:
Please post sample output from "uname -n" for your variety of servers.
Maybe somebody on this board can post a sample one from RHEL if the O/P is away from the terminal.
This User Gave Thanks to methyl For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

Case Statement

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Hey, guys I really need some help with a project. "Write a shell program that examines the command line... (8 Replies)
Discussion started by: sk192010`
8 Replies

2. Shell Programming and Scripting

Case Statement

Hey, guys I really need some help with a project. "Write a shell program that examines the command line arguments, counts and collects the number of options. Basically it has to collect and count the arguments that start with a "-" and the one's that don't start with a - I know I have to use... (2 Replies)
Discussion started by: sk192010`
2 Replies

3. Shell Programming and Scripting

case statement

Hi, I am writing case statement to execute some finction, my requirement is once one of the case statement is executed again it has to prompt for the option. for script in `echo "$Script_Selected"` do case $script in 1) getNoOFActUsers ;; 2) moveServerrOORotation ;; ... (2 Replies)
Discussion started by: Satyak
2 Replies

4. Shell Programming and Scripting

if-statement troubles

I try to compare the day and month of someones birthday with the day and month of today, so my little bash script can send a mail to the person that has its birthday that day. The first line of the file birthdays looks like this: firstname,lastname,01/01/1990,.... The variable birthday's... (4 Replies)
Discussion started by: doc.arne
4 Replies

5. Shell Programming and Scripting

help with case statement

I am writing a script to pull diskspace information from our servers. Here is the script that I wrote: #!/bin/ksh for host in `cat /oper/hosts/esc.misc` do ssh -q -o ConnectTimeout=10 operator@$host df -h|grep "/dev/" |egrep '8%|9%|100%' | awk '{print H " " "at " $5 " with " $4 "... (1 Reply)
Discussion started by: rkruck
1 Replies

6. UNIX for Dummies Questions & Answers

CASE statement

Hi, I am writing a bash shell script. My script has a few user defined parameters. When the script runs the first thing it does is make sure that these parameters are valid. One of the parameters is called YEAR. A valid input for YEAR can be 1997-2000. One way I have come up with to ensure... (3 Replies)
Discussion started by: msb65
3 Replies

7. UNIX for Dummies Questions & Answers

If or Case Statement

I want to write a program with the following variables: a=7000 b=24000 c=613.8 The user can enter two words: Vivid or Blue for example. The challenge is that the user might not want to write the words the way they appear. The user can write V or v or vivid or Vivid or write Blue or blue, or B,... (1 Reply)
Discussion started by: Ernst
1 Replies

8. Shell Programming and Scripting

case statement

hi all i'm writing a script and in it i need to prompt the user if the entered value is correct or not ,i wrote the following and its not working ,its executing the script even if i enter Y/N pls any help is appreciated echo "\nAre you sure you entered the right Destination Environment? y :... (5 Replies)
Discussion started by: bkan77
5 Replies

9. Shell Programming and Scripting

Case Statement

Can anyone please tell me why this wont work! Thanks so much! #!/bin/sh for file do case $file in *.*.*) echo Cannot have more than 1 dot exit ;; *'**'*) echo Cannot have more than 1 asterisk exit ;; *'*'*|?.) echo this is a target (19 Replies)
Discussion started by: Zeta_Acosta
19 Replies

10. Shell Programming and Scripting

case statement

Hi all, is it possible to create a 'dynamic' case statement. ie select option in `ls` do case satement depending on results of the above `ls` done I hope I have explained this ok! Thanks Helen (1 Reply)
Discussion started by: Bab00shka
1 Replies
Login or Register to Ask a Question