Copyright (C) 2000-2012 |
GNU Info (gawk.info)Break StatementThe `break' Statement --------------------- The `break' statement jumps out of the innermost `for', `while', or `do' loop that encloses it. The following example finds the smallest divisor of any integer, and also identifies prime numbers: # find smallest divisor of num { num = $1 for (div = 2; div*div <= num; div++) if (num % div == 0) break if (num % div == 0) printf "Smallest divisor of %d is %d\n", num, div else printf "%d is prime\n", num } When the remainder is zero in the first `if' statement, `awk' immediately "breaks out" of the containing `for' loop. This means that `awk' proceeds immediately to the statement following the loop and continues processing. (This is very different from the `exit' statement, which stops the entire `awk' program. Note: The `exit' Statement.) Th following program illustrates how the CONDITION of a `for' or `while' statement could be replaced with a `break' inside an `if': # find smallest divisor of num { num = $1 for (div = 2; ; div++) { if (num % div == 0) { printf "Smallest divisor of %d is %d\n", num, div break } if (div*div > num) { printf "%d is prime\n", num break } } } The `break' statement has no meaning when used outside the body of a loop. However, although it was never documented, historical implementations of `awk' treated the `break' statement outside of a loop as if it were a `next' statement (Note: The `next' Statement. ). Recent versions of Unix `awk' no longer allow this usage. `gawk' supports this use of `break' only if `--traditional' has been specified on the command line (Note: Command-Line Options.). Otherwise, it is treated as an error, since the POSIX standard specifies that `break' should only be used inside the body of a loop. (d.c.) automatically generated by info2www version 1.2.2.9 |