Bash - Case

About

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

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 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 (see Pathname Expansion below). The word is expanded using tilde expansion, parameter and variable expan- sion, arithmetic substitution, command substitution, process substitution and quote removal. Each pattern examined is expanded using tilde expansion, parameter and variable expan- sion, arithmetic substitution, command substitution, and process substitution. 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. The exit status is zero if no pattern matches. Oth- erwise, it is the exit status of the last command executed in list.

Exit Status

Returns the status of the last command executed.

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

Documentation / Reference


Powered by ComboStrap