Site icon DesignLinux

Bash break and continue

Using loops you can run multiple commands until the condition is satisfied. But sometimes you need to divert the flow of loop or terminate the loop iteration. In such cases, you can use break and continue statements in bash to handle the loop execution. In this guide we will how to use break and continue statements in Bash script.

Bash break Statement

The break statement will terminate the current loop and pass the control to the following statement or command. Generally, it is used to exit from a for, while, until or select loops.

Following is the basic syntax for the break statement:

break [n]

Here, the [n] is an optional argument and must greater than or equal to 1. [n] is used to terminate and exit from the n-th enclosing loop. break 1 is similar to break.

Let’s see an example for better understanding. In following script, in while loop when the third iteration occur it should terminate:

i=0

while [[ $i -lt 5 ]]
do
  echo "Number: $i"
  ((i++))
  if [[ $i -eq 3 ]]; then
    break
  fi
done

echo 'That's it!'
Number: 0
Number: 1
Number: 2
That's it!

Another example of using the break statement inside nested for loops. If the argument [n] is not provided then break terminates the current inner loop and outer loops will not terminate.

for i in {1..3}; do
  for j in {1..3}; do
    if [[ $j -eq 2 ]]; then
      break
    fi
    echo "j: $j"
  done
  echo "i: $i"
done

echo 'That's it!'
j: 1
i: 1
j: 1
i: 2
j: 1
i: 3
That's it!

To exit from the outer loop, you should use the break 2. Which will break and terminate the second enclosing loop:

for i in {1..3}; do
  for j in {1..3}; do
    if [[ $j -eq 2 ]]; then
      break 2
    fi
    echo "j: $j"
  done
  echo "i: $i"
done

echo 'That's it!'
j: 1
That's it!

Bash continue Statement

The continue statement will skip the remaining commands inside the body of the enclosing loop for the current iteration. Then it will pass the program control to the next iteration of the loop.

The common syntax of the continue statement is as follows:

continue [n]

Same as break, the [n] is an optional argument and can be greater or equal to 1. When [n] is given, the n-th enclosing loop is resumed. continue 1 is similar to continue.

In the example below, once the current iterated item is equal to 2, the continue statement will cause execution to return to the beginning of the loop and to continue with the next iteration.

i=0

while [[ $i -lt 5 ]]; do
  ((i++))
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done

echo 'That's it!'
Number: 1
Number: 3
Number: 4
Number: 5
That's it!

In below example, it will show the numbers from 1 through 50 which are divisible by 7. If a number is not divisible by 7, the continue statement skips the echo command and pass control to the next iteration of the loop.

for i in {1..50}; do
  if [[ $(( $i % 7 )) -ne 0 ]]; then
    continue
  fi
  echo "Divisible by 7: $i"
done
Divisible by 7: 7
Divisible by 7: 14
Divisible by 7: 21
Divisible by 7: 28
Divisible by 7: 35
Divisible by 7: 42
Divisible by 7: 49

Conclusion

In each programming languages loops are basic concepts and useful for automating repetitive tasks. In Bash, the break and continue statement are used to terminate current loop iteration and divert control to specific statement accordingly.

If you have any question or feedback, please leave a comment below.

Exit mobile version