While Loop in Bash

3 minute read

In Bash scripting, both for and while loops are essential constructs for executing repetitive tasks. These loops provide flexibility in handling different scenarios and iterating over various data structures. In this tutorial, we’ll explore the syntax and usage of both for and while loops in Bash, accompanied by practical examples.

Basic Syntax of the for Loop

The basic syntax of the for loop in Bash has been covered in the previous tutorial. Here’s a quick recap:

for variable in sequence
do
  # Commands to be executed for each iteration
done

The variable takes on values from the sequence during each iteration, and the commands within the loop block are executed accordingly.

Examples of Using the for Loop

Iterating Over Numbers

#!/bin/bash

echo "Counting from 1 to 5 using a for loop:"

for i in {1..5}
do
  echo $i
done

In this example, the for loop iterates over the sequence of numbers from 1 to 5 and prints each number on a new line.

Iterating Over an Array

#!/bin/bash

colors=("red" "green" "blue" "yellow")

echo "List of colors:"

for color in "${colors[@]}"
do
  echo $color
done

Here, the for loop iterates over the elements of an array (colors) and prints each color on a new line.

Generating File Names

#!/bin/bash

echo "Creating files using a for loop:"

for i in {1..3}
do
  touch "file_$i.txt"
  echo "Created file_$i.txt"
done

This script demonstrates how to use a for loop to create multiple files with names like file_1.txt, file_2.txt, and file_3.txt.

Basic Syntax of the while Loop

The basic syntax of the while loop in Bash is as follows:

while [ condition ]
do
  # Commands to be executed as long as the condition is true
done

The commands within the loop block are executed repeatedly as long as the specified condition remains true.

Examples of Using the while Loop

Counting Down with while Loop

#!/bin/bash

counter=5

echo "Counting down using a while loop:"

while [ $counter -gt 0 ]
do
  echo $counter
  ((counter--))
done

This script uses a while loop to count down from 5 to 1, printing each number on a new line.

Reading Lines from a File

#!/bin/bash

file="example.txt"

echo "Reading lines from $file using a while loop:"

while IFS= read -r line
do
  echo $line
done < "$file"

Here, the while loop reads lines from a file (example.txt) and prints each line on a new line.

Combining for and while Loops

It’s also common to see combinations of for and while loops in Bash scripts for more complex scenarios.

#!/bin/bash

echo "Combining for and while loops:"

for i in {1..3}
do
  counter=3
  echo "Iteration $i:"

  while [ $counter -gt 0 ]
  do
    echo "    Inner loop count: $counter"
    ((counter--))
  done
done

This script combines a for loop with a nested while loop to create a more intricate looping structure.

Conclusion

Both for and while loops in Bash are powerful tools for handling repetitive tasks. The choice between them depends on the specific requirements of your script. While the for loop is suitable for iterating over a predefined sequence, the while loop is useful when you need to repeat a block of code based on a condition.

Now equipped with the knowledge from this tutorial, you can confidently use for and while loops in your Bash scripts, creating efficient and readable automation solutions.


Frequently Asked Questions

  1. Can I use both for and while loops in the same Bash script?
    Yes, you can use both for and while loops in the same script, and you can even nest them for more complex structures.

  2. What’s the key difference between for and while loops in Bash?
    The for loop is suitable for iterating over a sequence, while the while loop is used to repeat a block of code as long as a specified condition is true.

  3. Can I use a variable in the condition of a while loop?
    Yes, you can use variables and expressions in the condition of a while loop to create dynamic loops.

  4. How do I terminate a while loop in Bash?
    The while loop continues to execute as long as the specified condition remains true. To terminate the loop, ensure that the condition becomes false.

  5. Is it possible to use both for and while loops within each other?
    Yes, you can nest for and while loops within each other to create more complex looping structures in Bash scripts.

Updated: