switch.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
- '"
- '" Copyright (c) 1993 The Regents of the University of California.
- '" Copyright (c) 1994-1997 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: switch.n,v 1.5.18.1 2004/10/27 14:23:58 dkf Exp $
- '"
- .so man.macros
- .TH switch n 7.0 Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- switch - Evaluate one of several scripts, depending on a given value
- .SH SYNOPSIS
- fBswitch fR?fIoptionsfR?fI string pattern body fR?fIpattern body fR...?
- .sp
- fBswitch fR?fIoptionsfR?fI string fR{fIpattern body fR?fIpattern body fR...?}
- .BE
- .SH DESCRIPTION
- .PP
- The fBswitchfR command matches its fIstringfR argument against each of
- the fIpatternfR arguments in order.
- As soon as it finds a fIpatternfR that matches fIstringfR it
- evaluates the following fIbodyfR argument by passing it recursively
- to the Tcl interpreter and returns the result of that evaluation.
- If the last fIpatternfR argument is fBdefaultfR then it matches
- anything.
- If no fIpatternfR argument
- matches fIstringfR and no default is given, then the fBswitchfR
- command returns an empty string.
- .PP
- If the initial arguments to fBswitchfR start with fB-fR then
- they are treated as options. The following options are
- currently supported:
- .TP 10
- fB-exactfR
- Use exact matching when comparing fIstringfR to a pattern. This
- is the default.
- .TP 10
- fB-globfR
- When matching fIstringfR to the patterns, use glob-style matching
- (i.e. the same as implemented by the fBstring matchfR command).
- .TP 10
- fB-regexpfR
- When matching fIstringfR to the patterns, use regular
- expression matching
- (as described in the fBre_syntaxfR reference page).
- .TP 10
- fB-|-fR
- Marks the end of options. The argument following this one will
- be treated as fIstringfR even if it starts with a fB-fR.
- .PP
- Two syntaxes are provided for the fIpatternfR and fIbodyfR 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 fIpatternfR 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.
- .PP
- If a fIbodyfR is specified as ``fB-fR'' it means that the fIbodyfR
- for the next pattern should also be used as the body for this
- pattern (if the next pattern also has a body of ``fB-fR''
- then the body after that is used, and so on).
- This feature makes it possible to share a single fIbodyfR among
- several patterns.
- .PP
- Beware of how you place comments in fBswitchfR commands. Comments
- should only be placed fBinsidefR the execution body of one of the
- patterns, and not intermingled with the patterns.
- .SH "EXAMPLES"
- The fBswitchfR command can match against variables and not just
- literals, as shown here (the result is fI2fR):
- .CS
- set foo "abc"
- fBswitchfR abc a - b {expr 1} $foo {expr 2} default {expr 3}
- .CE
- .PP
- Using glob matching and the fall-through body is an alternative to
- writing regular expressions with alternations, as can be seen here
- (this returns fI1fR):
- .CS
- fBswitchfR -glob aaab {
- a*b -
- b {expr 1}
- a* {expr 2}
- default {expr 3}
- }
- .CE
- .PP
- Whenever nothing matches, the fBdefaultfR clause (which must be
- last) is taken. This example has a result of fI3fR:
- .CS
- fBswitchfR xyz {
- a -
- b {
- # Correct Comment Placement
- expr 1
- }
- c {
- expr 2
- }
- default {
- expr 3
- }
- }
- .CE
- .SH "SEE ALSO"
- for(n), if(n), regexp(n)
- .SH KEYWORDS
- switch, match, regular expression