Provided by: tcl8.6-doc_8.6.14+dfsg-1build1_all bug

NAME

       while - Execute script repeatedly as long as a condition is met

SYNOPSIS

       while test body
_________________________________________________________________________________________________

DESCRIPTION

       The while command evaluates test as an expression (in the same way that expr evaluates its
       argument).  The value of the expression must a proper boolean value; if it is a true value
       then  body  is executed by passing it to the Tcl interpreter.  Once body has been executed
       then test is evaluated again, and the process repeats until eventually test evaluates to a
       false  boolean  value.   Continue  commands  may  be executed inside body to terminate the
       current iteration of the loop, and break commands may be executed  inside  body  to  cause
       immediate  termination  of  the  while command.  The while command always returns an empty
       string.

       Note: test should almost always be enclosed in braces.   If  not,  variable  substitutions
       will  be made before the while command starts executing, which means that variable changes
       made by the loop body will not be considered in the expression.  This is likely to  result
       in  an  infinite  loop.  If test is enclosed in braces, variable substitutions are delayed
       until the expression is  evaluated  (before  each  loop  iteration),  so  changes  in  the
       variables  will be visible.  For an example, try the following script with and without the
       braces around $x<10:

              set x 0
              while {$x<10} {
                  puts "x is $x"
                  incr x
              }

EXAMPLE

       Read lines from a channel until we get to the end of the stream, and print them out with a
       line-number prepended:

              set lineCount 0
              while {[gets $chan line] >= 0} {
                  puts "[incr lineCount]: $line"
              }

SEE ALSO

       break(3tcl), continue(3tcl), for(3tcl), foreach(3tcl)

KEYWORDS

       boolean, loop, test, while