Table of Contents

About

The case control statement execute commands based on regular expression pattern matching.

Example

Initscript example:

case "$1" in
        start)
            start
            ;;
         
        stop)
            stop
            ;;
         
        status)
            status anacron
            ;;
        restart)
            stop
            start
            ;;
        condrestart)
            if test "x`pidof anacron`" != x; then
                stop
                start
            fi
            ;;
         
        *)
            echo $"Usage: $0 {start|stop|restart|condrestart|status}"
            exit 1
 
esac

Syntax

case WORD in PATTERN1) COMMANDS;; PATTERN2) COMMANDS ;; ... PATTERNN) COMMANDS;; esac
# or
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac

Selectively execute COMMANDS based upon WORD matching glob PATTERN. The | is used to separate multiple patterns.

Flow words:

  • continue
  • break

A case command first expands word, and tries to match it against each pattern in turn, using the same matching rules as for path-name expansion.

The word is expanded using:

Each pattern examined is expanded using:

  • tilde expansion,
  • parameter and variable expansion,
  • arithmetic substitution,
  • command substitution,
  • and process substitution.

Match

If the shell option nocasematch is enabled, the match is performed without regard to the case of alphabetic characters.

When a match is found, the corresponding list is executed.

After the first match, no subsequent matches are attempted.

Exit Status

The exit status is zero if no pattern matches. Otherwise, it is the exit status of the last command executed in list.

Exit Status

Returns the status of the last command executed.

Documentation / Reference

help case