Go forward to Next Statement.
Go backward to Break Statement.
Go up to Statements.
The `continue' Statement
========================
The `continue' statement, like `break', is used only inside `for',
`while', and `do'-`while' loops. It skips over the rest of the loop
body, causing the next cycle around the loop to begin immediately.
Contrast this with `break', which jumps out of the loop altogether.
Here is an example:
# print names that don't contain the string "ignore"
# first, save the text of each line
{ names[NR] = $0 }
# print what we're interested in
END {
for (x in names) {
if (names[x] ~ /ignore/)
continue
print names[x]
}
}
If one of the input records contains the string `ignore', this
example skips the print statement for that record, and continues back to
the first statement in the loop.
This is not a practical example of `continue', since it would be
just as easy to write the loop like this:
for (x in names)
if (names[x] !~ /ignore/)
print names[x]
The `continue' statement in a `for' loop directs `awk' to skip the
rest of the body of the loop, and resume execution with the
increment-expression of the `for' statement. The following program
illustrates this fact:
awk 'BEGIN {
for (x = 0; x <= 20; x++) {
if (x == 5)
continue
printf ("%d ", x)
}
print ""
}'
This program prints all the numbers from 0 to 20, except for 5, for
which the `printf' is skipped. Since the increment `x++' is not
skipped, `x' does not remain stuck at 5. Contrast the `for' loop above
with the `while' loop:
awk 'BEGIN {
x = 0
while (x <= 20) {
if (x == 5)
continue
printf ("%d ", x)
x++
}
print ""
}'
This program loops forever once `x' gets to 5.
As described above, the `continue' statement has no meaning when
used outside the body of a loop. However, although it was never
documented, historical implementations of `awk' have treated the
`continue' statement outside of a loop as if it were a `next' statement
(see The `next' Statement: Next Statement.). By default, `gawk'
silently supports this usage. However, if `-W posix' has been
specified on the command line (see Invoking `awk': Command Line.), it
will be treated as an error, since the POSIX standard specifies that
`continue' should only be used inside the body of a loop.