Looping Constructs (Bash Reference Manual)
Next: Conditional Constructs, Up: Compound Commands [Contents][Index]
3.2.5.1 Looping Constructs
Bash supports the following looping constructs.
Note that wherever a ‘;
’ appears in the description of a command’s syntax, it may be replaced with one or more newlines.
until
The syntax of the
until
command is:until test-commands; do consequent-commands; done
Execute
consequent-commands
as long astest-commands
has an exit status which is not zero. The return status is the exit status of the last command executed inconsequent-commands
, or zero if none was executed.while
The syntax of the
while
command is:while test-commands; do consequent-commands; done
Execute
consequent-commands
as long astest-commands
has an exit status of zero. The return status is the exit status of the last command executed inconsequent-commands
, or zero if none was executed.for
The syntax of the
for
command is:for name [ [in [words …] ] ; ] do commands; done
Expand
words
(see Shell Expansions), and executecommands
once for each member in the resultant list, withname
bound to the current member. If ‘in words
’ is not present, thefor
command executes thecommands
once for each positional parameter that is set, as if ‘in "$@"
’ had been specified (see Special Parameters).The return status is the exit status of the last command that executes. If there are no items in the expansion of
words
, no commands are executed, and the return status is zero.An alternate form of the
for
command is also supported:for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
First, the arithmetic expression
expr1
is evaluated according to the rules described below (see Shell Arithmetic). The arithmetic expressionexpr2
is then evaluated repeatedly until it evaluates to zero. Each timeexpr2
evaluates to a non-zero value,commands
are executed and the arithmetic expressionexpr3
is evaluated. If any expression is omitted, it behaves as if it evaluates to 1. The return value is the exit status of the last command incommands
that is executed, or false if any of the expressions is invalid.
The break
and continue
builtins (see Bourne Shell Builtins) may be used to control loop execution.
Next: Conditional Constructs, Up: Compound Commands [Contents][Index]