Friday, November 15, 2024
Google search engine
HomeGuest BlogsBash continue: How to Resume a Loop

Bash continue: How to Resume a Loop

Introduction

The continue statement is a Bash builtin that alters the flow of script loops. The concept is not unique to Bash and appears in other programming languages.

The best way to understand how the Bash continue statement works is through hands-on examples.

This tutorial shows how to use the Bash continue statement in Bash scripts.

Bash continue: How To Resume A LoopBash continue: How To Resume A Loop

Prerequisites

  • A machine running Linux or macOS.
  • A text editor for the examples.
  • Basic knowledge of Bash scripting.

The Bash continue Statement

The Bash continue statement resumes the following iteration in a loop or looping statement.

The syntax is:

continue <integer>

The continue statement only has meaning when applied to loops. The integer value indicates the depth for the continue statement. By default, the integer is 1 and writing the number is not mandatory. Increase the number to resume an outer loop statement.

Bash continue loop state diagramBash continue loop state diagram

Use a continue statement as a loop control statement. For example, the continue statement helps end the current iteration inside a loop when meeting a specific condition. Depending on the loop type, the program resumes at the next iteration or restarts the loop.

Bash continue Examples

Below are examples and explanations of working with the continue statement in Bash scripts.

Note: Never used Bash to write scripts before? Follow our guide How to Write a Bash Script.

The following primary loop constructs showcase how the statement works:

  • The for loop continues at the next iteration when combined with continue.
  • The continue statement restarts the while and until loops.

The select command also appears in the examples, even though it is not a primary loop construct. The statement functions as a loop, and the continue statement works for any looping command.

Using Bash Continue with a for Loop

Use the continue statement inside a conditional if to control the flow of a for:

#!/bin/bash

for i in {1..10}
do
	if [[ $i == '9' ]]
	then
		echo "Number $i!"
		continue
	fi
	echo "$i"
done
echo "Done!"
for_continue.sh bash scriptfor_continue.sh bash script

The code does the following:

  • Line 3 starts the for loop condition, iterating the variable i from 1 to 10.
  • Line 5 checks the i value. When the variable equals 9, the program echoes a message and restarts the loop at the next iteration (line 3).
  • Line 10 prints the number to the console only when the conditional statement in line 5 is False.

Run the script to see the results.

for_continue.sh terminal outputfor_continue.sh terminal output

The output prints all the individual numbers to the console. When the condition in line 5 evaluates to True ($i == '9'), the console echoes a message.

Using Bash Continue with Nested Loop

The continue statement works with nested loops as well. For example, use continue 2 to resume an outer loop:

#!/bin/bash

for i in {1..5}
do
        for j in {1..5}
        do
                if [[ $i -eq $j ]]
                then
                        echo "$i = $j"
                        continue 2
                fi
                echo "$i =/= $j"
        done
done

echo "Done!"
nested_continue.sh scriptnested_continue.sh script

The program does the following:

  • Line 3 starts the outer loop, incrementing the variable i from 1 to 5.
  • Line 5 starts an inner for loop, incrementing the variable j from 1 to 5 for each i increment.
  • Line 7 checks if the variables i and j are equal ($i -eq $j). If they are, the continue 2 statement resumes the outer loop at the next iteration. However, if the values are different, the program continues as expected.

Run the script to see the program output.

nested_continue.sh terminal outputnested_continue.sh terminal output

Each time the two values are equal, the first number increases.

Using Bash Continue with a while Loop

Below is an example Bash script that uses the <strong>continue</strong> statement in a while loop:

#!/bin/bash

i=0

while [[ $i -lt 11 ]] 
do
	if [[ "$i" == '9' ]]
	then
		echo "Number $i!"
		((i++))
		continue
	fi
	echo $i
	((i++))
done
while_continue.sh bash script codewhile_continue.sh bash script code

Each line does the following:

  • Line 3 defines a variable i and sets the value to 0.
  • Line 5 initiates a while loop. The end condition is when i is less than 11.
  • Line 7 states a condition check using an if statement. When the variable i equals 9, the program proceeds to lines 9-11. In all other cases, the code jumps to line 13.
  • Lines 9-11 print a message to the console, increment i, and the continue statement resumes the loop at line 5.
  • Lines 13 and 14 print the variable i to the console and increment it.

To see the output, run the script from the terminal.

while_continue.sh terminal outputwhile_continue.sh terminal output

The program prints all the numbers to the console. Due to the conditional and continue statements, a different message prints for number 9.

Using Bash Continue with an until Loop

Combine the continue statement with an until loop and provide a condition to change the loop behavior for a certain value. For example, try the following script:

#!/bin/bash

i=0

until [[ $i -gt 10  ]]
do
	if [[ $i -eq 9  ]]
	then
		echo "Number $i!"
		((i++))
		continue
	fi
	echo $i
	((i++))
done
until_cotinue.sh bash script codeuntil_cotinue.sh bash script code

The code increments a variable and loops until the value reaches 10. When the variable equals 9, the program outputs a different message. The continue statement restarts the until loop and continues as usual.

Using Bash Continue with a select Loop

The select command is a particular case because it is not a primary Bash scripting loop. The command creates menus that require user input. Use the continue statement to provide a different output based on the user-selected value.

As an example, try the following Bash script:

#!/bin/bash

PS3="Choose a number: "

select i in {1..10}
do
	echo "Selected number: $i"
	if [[ $REPLY -eq 9 ]]
	then
		echo "Number $i!"
		continue
	fi
done
select_continue.sh bash script code select_continue.sh bash script code

The script consists of the following elements:

  • The PS3 in line 3 is the display message for the select loop.
  • Line 5 defines the loop condition, listing numbers from 1 to 10. The variable i stores the user input.
  • Line 7 echoes the selection.
  • Line 8 performs a check. If the user input value is 9, the program prints a message to the console and continues the select loop at the next iteration.

Run the script and test for different values to see the output.

select_continue.sh terminal outputselect_continue.sh terminal output

To exit the program, press CTRL+C or add a break statement.

Conclusion

After following the examples from this tutorial, you know the purpose of a continue statement and how to use it with loops in Bash scripting.

Next, learn how to write a Bash function.

Was this article helpful?
YesNo

RELATED ARTICLES

Most Popular

Recent Comments