continue - Linux


Overview

The continue command is used within looping constructs in shell scripts in Linux. Its primary function is to skip the remaining commands in the current loop iteration and proceed with the next iteration of the loop. This command is most effective in scenarios where certain conditions might require prematurely skipping to the next cycle of a loop without terminating the loop entirely.

Syntax

The basic syntax of the continue command is as follows:

continue [n]

Where [n] is an optional argument specifying the number of nesting levels of loops to skip. If [n] is not provided, it defaults to 1, which affects the immediate loop.

Options/Flags

The continue command does not have any options or flags. The only parameter it takes is an optional numeric argument [n], which allows control over multiple nested loops.

  • [n]: An integer specifying the number of loop levels to continue past. If omitted, it defaults to 1, affecting the current loop.

Examples

  1. Simple Continue
    In a basic for loop, skip numbers that are divisible by 3:

    for i in {1..10}; do
        if (( i % 3 == 0 )); then
            continue
        fi
        echo $i
    done
    

    This will output numbers from 1 to 10 excluding multiples of 3.

  2. Nested Loop Continue
    Using continue with a level argument in nested loops:

    for i in {1..3}; do
        for j in {1..3}; do
            if (( i == j )); then
                continue 2
            fi
            echo "i=$i, j=$j"
        done
    done
    

    This script skips the output for pairs where i equals j.

Common Issues

  • Misunderstanding Loop Levels: A common error occurs when users specify an incorrect level number for nested loops. This can either cause the script to behave unexpectedly or result in a syntax error.

    Solution: Ensure the correct nesting level number is used and thoroughly test in complex loop scenarios.

  • Relying on continue Outside Loops: If continue is mistakenly placed outside of any loop, it will cause a scripting error.

    Solution: Review that continue is only used within the intended loop constructs.

Integration

The continue command can be combined with other Linux commands in scripts to facilitate more complex decision-making and loop control. Here’s an example integrating continue with grep:

for filename in *.txt; do
    grep -q 'error' "$filename"
    if [ $? -eq 0 ]; then
        continue
    fi
    echo "Processing $filename"
done

This script checks for the presence of the word “error” in .txt files, skipping files that contain the term.

  • break: Used to exit from loop constructs.
  • for, while, until: Commands to create loop constructs which can be controlled by continue.

For a deeper understanding of shell scripting and loop controls, visiting the Bash manual page (man bash) or online resources like the GNU Bash Reference Manual can be beneficial.