| 1 | '\" | 
|---|
| 2 | '\" Copyright (c) 1993 The Regents of the University of California. | 
|---|
| 3 | '\" Copyright (c) 1994-1997 Sun Microsystems, Inc. | 
|---|
| 4 | '\" | 
|---|
| 5 | '\" See the file "license.terms" for information on usage and redistribution | 
|---|
| 6 | '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. | 
|---|
| 7 | '\" | 
|---|
| 8 | '\" RCS: @(#) $Id: for.n,v 1.9 2007/12/13 15:22:32 dgp Exp $ | 
|---|
| 9 | '\" | 
|---|
| 10 | .so man.macros | 
|---|
| 11 | .TH for n "" Tcl "Tcl Built-In Commands" | 
|---|
| 12 | .BS | 
|---|
| 13 | '\" Note:  do not modify the .SH NAME line immediately below! | 
|---|
| 14 | .SH NAME | 
|---|
| 15 | for \- 'For' loop | 
|---|
| 16 | .SH SYNOPSIS | 
|---|
| 17 | \fBfor \fIstart test next body\fR | 
|---|
| 18 | .BE | 
|---|
| 19 |  | 
|---|
| 20 | .SH DESCRIPTION | 
|---|
| 21 | .PP | 
|---|
| 22 | \fBFor\fR is a looping command, similar in structure to the C | 
|---|
| 23 | \fBfor\fR statement.  The \fIstart\fR, \fInext\fR, and | 
|---|
| 24 | \fIbody\fR arguments must be Tcl command strings, and \fItest\fR | 
|---|
| 25 | is an expression string. | 
|---|
| 26 | The \fBfor\fR command first invokes the Tcl interpreter to | 
|---|
| 27 | execute \fIstart\fR.  Then it repeatedly evaluates \fItest\fR as | 
|---|
| 28 | an expression; if the result is non-zero it invokes the Tcl | 
|---|
| 29 | interpreter on \fIbody\fR, then invokes the Tcl interpreter on \fInext\fR, | 
|---|
| 30 | then repeats the loop.  The command terminates when \fItest\fR evaluates | 
|---|
| 31 | to 0.  If a \fBcontinue\fR command is invoked within \fIbody\fR then | 
|---|
| 32 | any remaining commands in the current execution of \fIbody\fR are skipped; | 
|---|
| 33 | processing continues by invoking the Tcl interpreter on \fInext\fR, then | 
|---|
| 34 | evaluating \fItest\fR, and so on.  If a \fBbreak\fR command is invoked | 
|---|
| 35 | within \fIbody\fR | 
|---|
| 36 | or \fInext\fR, | 
|---|
| 37 | then the \fBfor\fR command will | 
|---|
| 38 | return immediately. | 
|---|
| 39 | The operation of \fBbreak\fR and \fBcontinue\fR are similar to the | 
|---|
| 40 | corresponding statements in C. | 
|---|
| 41 | \fBFor\fR returns an empty string. | 
|---|
| 42 | .PP | 
|---|
| 43 | Note: \fItest\fR should almost always be enclosed in braces.  If not, | 
|---|
| 44 | variable substitutions will be made before the \fBfor\fR | 
|---|
| 45 | command starts executing, which means that variable changes | 
|---|
| 46 | made by the loop body will not be considered in the expression. | 
|---|
| 47 | This is likely to result in an infinite loop.  If \fItest\fR is | 
|---|
| 48 | enclosed in braces, variable substitutions are delayed until the | 
|---|
| 49 | expression is evaluated (before | 
|---|
| 50 | each loop iteration), so changes in the variables will be visible. | 
|---|
| 51 | See below for an example: | 
|---|
| 52 | .SH EXAMPLES | 
|---|
| 53 | Print a line for each of the integers from 0 to 10: | 
|---|
| 54 | .CS | 
|---|
| 55 | for {set x 0} {$x<10} {incr x} { | 
|---|
| 56 | puts "x is $x" | 
|---|
| 57 | } | 
|---|
| 58 | .CE | 
|---|
| 59 | .PP | 
|---|
| 60 | Either loop infinitely or not at all because the expression being | 
|---|
| 61 | evaluated is actually the constant, or even generate an error!  The | 
|---|
| 62 | actual behaviour will depend on whether the variable \fIx\fR exists | 
|---|
| 63 | before the \fBfor\fR command is run and whether its value is a value | 
|---|
| 64 | that is less than or greater than/equal to ten, and this is because | 
|---|
| 65 | the expression will be substituted before the \fBfor\fR command is | 
|---|
| 66 | executed. | 
|---|
| 67 | .CS | 
|---|
| 68 | for {set x 0} $x<10 {incr x} { | 
|---|
| 69 | puts "x is $x" | 
|---|
| 70 | } | 
|---|
| 71 | .CE | 
|---|
| 72 | .PP | 
|---|
| 73 | Print out the powers of two from 1 to 1024: | 
|---|
| 74 | .CS | 
|---|
| 75 | for {set x 1} {$x<=1024} {set x [expr {$x * 2}]} { | 
|---|
| 76 | puts "x is $x" | 
|---|
| 77 | } | 
|---|
| 78 | .CE | 
|---|
| 79 |  | 
|---|
| 80 | .SH "SEE ALSO" | 
|---|
| 81 | break, continue, foreach, while | 
|---|
| 82 |  | 
|---|
| 83 | .SH KEYWORDS | 
|---|
| 84 | for, iteration, looping | 
|---|