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.
untilThe syntax of the
untilcommand is:until test-commands; do consequent-commands; done
Execute
consequent-commandsas long astest-commandshas 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.whileThe syntax of the
whilecommand is:while test-commands; do consequent-commands; done
Execute
consequent-commandsas long astest-commandshas 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.forThe syntax of the
forcommand is:for name [ [in [words …] ] ; ] do commands; done
Expand
words(see Shell Expansions), and executecommandsonce for each member in the resultant list, withnamebound to the current member. If ‘in words’ is not present, theforcommand executes thecommandsonce 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
forcommand is also supported:for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
First, the arithmetic expression
expr1is evaluated according to the rules described below (see Shell Arithmetic). The arithmetic expressionexpr2is then evaluated repeatedly until it evaluates to zero. Each timeexpr2evaluates to a non-zero value,commandsare executed and the arithmetic expressionexpr3is 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 incommandsthat 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]