switch ?options? string {pattern body ? pattern body ...?}
If the initial arguments to switch start with - then they are treated as options. The following options are currently supported:
-exact | Use exact matching when comparing string to a pattern. This is the default. |
-glob | When matching string to the patterns, use glob-style matching (i.e. the same as implemented by the string match command). |
-regexp | When matching string to the patterns, use regular expression matching (i.e. the same as implemented by the regexp command). |
-- | Marks the end of options. The argument following this one will be treated as string even if it starts with a -. |
Two syntaxes are provided for the pattern and body arguments. The first uses a separate argument for each of the patterns and commands; this form is convenient if substitutions are desired on some of the patterns or commands. The second form places all of the patterns and commands together into a single argument; the argument must have proper list structure, with the elements of the list being the patterns and commands. The second form makes it easy to construct multi-line switch commands, since the braces around the whole list make it unnecessary to include a backslash at the end of each line. Since the pattern arguments are in braces in the second form, no command or variable substitutions are performed on them; this makes the behavior of the second form different than the first form in some cases.
If a body is specified as "-" it means that the body for the next pattern should also be used as the body for this pattern (if the next pattern also has a body of "-" then the body after that is used, and so on). This feature makes it possible to share a single body among several patterns.
Below are some examples of switch commands: