NAME WHILE(I)
while - shell iteration command
SYNOPSIS
while expr
commands... (may include break or continue)
end
DESCRIPTION
While evaluates the expression expr, which is similar to
(and a superset of) the expression described in if(I). If
the expression is true, while does nothing, permitting the
command(s) on following lines to be read and executed by the
Shell. If the expression is false, the input file is effec-
tively searched for the matching end command, and the Shell
resumes execution of the command(s) on the line following
the end. The while-end grouping may be nested up to three
levels deep.
In addition to the type of expression permitted by if, while
treats a single, nonnull argument as a true expression, and
treats a single null argument or lack of arguments as a
false expression.
The break command terminates the nearest enclosing while-end
group, causing execution to resume after the nearest
succeeding unmatched end. Exit from n levels is obtained by
writing n break commands on the same line.
The continue command causes execution to resume at a preced-
ing while, i.e., the while that begins the smallest loop
containing the continue.
A common loop is that of processing arguments one at a time:
see shift(I).
The following is a shell procedure that is also a filter.
It reads a line at a time from the standard input that
existed when the procedure was invoked, exiting on end-of-
file.
while 1
= a <-- | exit
commands using $a ...
end
SEE ALSO
goto(I), if(I), onintr(I), sh(I), shift(I), switch(I)
DIAGNOSTICS
while: missing end
while: >3 levels
while: syntax errors like those of if.
break: missing end
break: used outside loop
continue: used outside loop
end: used outside loop
BUGS
A goto may be used to terminate one or more while-end group-
ings. Those who use it to branch into a loop will receive
appropriately peculiar results. When an interrupt is caught
and transfer to a label caused by use of onintr(I), all
currently effective while-end loops are cancelled, i.e., the
onintr performs a goto that breaks all loops. Neither while
nor end may be hidden behind semicolons or used within other
commands.