Case statement - continue


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Case statement - continue
# 8  
Old 03-08-2017
Hi,

Here's a code example combining case, for and if:

Code:
$ cat script.sh
#!/bin/bash

for animal in `/bin/ls animals`
do
        case "$animal" in
                "cat")
                        echo "This is an acceptable animal: $animal"
                        ;;
                "dog")
                        echo "This is another cceptable animal: $animal"
                        ;;
                *)
                        if [ "$animal" == "furby" ]
                        then
                                #Let's skip this - it's not a real animal
                                continue
                        else
                                echo "And this is also an acceptable animal: $animal"
                        fi
                        ;;
        esac
done
$ ls animals
cat  dog  furby  monkey  zebra
$ ./script.sh
This is an acceptable animal: cat
This is another cceptable animal: dog
And this is also an acceptable animal: monkey
And this is also an acceptable animal: zebra
$

When we run the script, the effect of the continue statement when animal is equal to "furby" is to skip at that point entirely to the next anmal in the list, which is "monkey". So we only see "cat", "dog", "monkey" and "zebra" mentioned in the output, with the continue causing "furby" to be skipped in the output entirely.

Hope this helps clear up how these things can be used in combination.
# 9  
Old 03-08-2017
Quote:
Originally Posted by digioleg54
No, it show me an error
Code:
./sftp_ondemand.sh[95]: syntax error at line 324 : `else' unexpected

We have no idea what 'else' that is, where it is, or why you put it there.

This is because we can't see your computer from here. Show your code.
# 10  
Old 03-08-2017
Hi,

To also show how continue can be used with case alone, here's a slightly modified version without the if clause.

Code:
#!/bin/bash

for animal in `/bin/ls animals`
do
        case "$animal" in
                "cat")
                        echo "This is an acceptable animal: $animal"
                        ;;
                "dog")
                        echo "This is another cceptable animal: $animal"
                        ;;
                "furby")
                        #Let's skip this - it's not a real animal
                        continue
                        ;;
                *)
                        echo "And this is also an acceptable animal: $animal"
                        ;;
        esac
done

# 11  
Old 03-08-2017
Sorry all, but I am working on AIX and Bourne shell
# 12  
Old 03-08-2017
The *) does the trick. Because it is last and matches everything that was not matched before, it behaves like an else.
Code:
cd dir &&
for file in *
do
  case $file in
  a)
        do something
  ;;
  b)
        do something
  ;;
  *)
       do something else
  ;;
  esac
done

# 13  
Old 03-08-2017
Quote:
Originally Posted by digioleg54
Sorry all, but I am working on AIX and Bourne shell
So change #!/bin/bash to #!/bin/sh. Nothing about that code was bash specific.
# 14  
Old 03-09-2017
Another thing to note is that on AIX /bin/sh is a POSIX shell, not a Bourne shell (it is hard linked to psh and ksh).

The Bourne shell is bsh, but it is only there for legacy reasons, and you probably do not want to use that..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

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

2. Shell Programming and Scripting

Case statement

Hello, The standard case statement :- case "$1" in "IE0263") commands;; "IE0264") commands;; esac is it possible to have :- case "$1" in "IE0263" OR "IE0878") commands;; "IE0264") commands;; esac Thanks (4 Replies)
Discussion started by: jmahal
4 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

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

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

6. Shell Programming and Scripting

case statement

Hi all, I think i'm asking a sqtupid question here.. i'm using case sttament, what is the syntax or symbol for "or"? I thought was || here a quick sample of my case statment echo "Would you like to update your detail ?" read response case $response in ... (2 Replies)
Discussion started by: c00kie88
2 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

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

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