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