Parece bem documentado para mim na man page do Bash:
trecho
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against
each pattern in turn, using the same matching rules as for
pathname expansion (see Pathname Expansion below). The word is
expanded using tilde expansion, parameter and variable expansion,
arithmetic substitution, command substitution, process substitution
and quote removal. Each pattern examined is expanded using tilde
expansion, parameter and variable expansion, 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.
If the ;; operator is used, no subsequent matches are attempted
after the first pattern match. Using ;& in place of ;; causes
execution to continue with the list associated with the next set of
patterns. Using ;;& in place of ;; causes the shell to test the
next pattern list in the statement, if any, and execute any
associated list on a successful match. The exit status is zero if no
pattern matches. Otherwise, it is the exit status of the last
command executed in list.
Isso não funcionará porque a notação ;;
está fora do caso ... bloco esac.
esac
;;
print "why here?"
Além disso, seu exemplo mostra o shell Korn ( ksh
), mas a notação é a mesma do que eu sei sobre ksh
. Também é mostrado aqui:
Referências