case
value
in
pattern1
)
cmds1
;;
pattern2
)
cmds2
;;
.
.
.
esac
Execute the first set of commands (
cmds1
) if
value
matches
pattern1
, execute the second set of commands (
cmds2
) if
value
matches
pattern2
, etc.
Be sure the last command in each set ends with
;;
.
value
is typically a positional parameter or other shell variable.
cmds
are typically UNIX commands, shell programming commands,
or variable assignments.
Patterns can use file generation metacharacters.
Multiple patterns (separated by
|
) can be specified on the same line;
in this case, the associated
cmds
are executed
whenever
value
matches any of these patterns.
See below and under
eval
for examples.
(Note: the Korn shell allows
pattern
to be preceded by an optional
open parenthesis, as in
(
pattern
)
. It's useful for balancing
parentheses inside a
$( )
construct.)
Read first command-line argument and take appropriate action:
case $1 in #match the first arg
no|yes) response=1;;
-[tT]) table=TRUE;;
*) echo "unknown option"; exit 1;;
esac
Read user-supplied lines until user exits:
while : # Null command; always true
do
echo "Type . to finish ==> \c"
read line
case "$line" in
.) echo "Message done"
break ;;
*) echo "$line" >> $message ;;
esac
done