Process commands depending on the value of a variable. When you need to handle more than three choices, switch
is a useful alternative to an if-then-else
statement. If the string
variable matches pattern1
, the first set of commands
is executed; if string
matches pattern2
, the second set of commands
is executed; and so on. If no patterns match, execute commands under the default
case. string
can be specified using command substitution, variable substitution, or filename expansion. Patterns can be specified using pattern-matching symbols *
, ?
, and [
]
. breaksw
exits the switch
after commands
are executed. If breaksw
is omitted (which is rarely done), the switch
continues to execute another set of commands until it reaches a breaksw
or endsw
. Here is the general syntax of switch
, side-by-side with an example that processes the first command-line argument.
switch (string
) switch ($argv[1])
case pattern1
: case -[nN]:
commands
nroff $file | lp
breaksw breaksw
case pattern2
: case -[Pp]:
commands
pr $file | lp
breaksw breaksw
case pattern3
: case -[Mm]:
commands
more $file
breaksw breaksw
. case -[Ss]:
. sort $file
. breaksw
default: default:
commands
echo "Error-no such option"
exit 1
breaksw breaksw
endsw endsw