8 Examples of “while” Loop in Bash

LINUX
FUNDAMENTALS
A Complete Guide for Beginners Enroll Course Now

Bash offers different types of loops, while loop is one of them. It runs a block of codes until the given condition is false. The while loop is necessary for automating repetitive tasks. In this article, I will show you 8 distinct example of a while loop in bash. You’ll understand how versatile the while loop is for carrying out several activities. Continue reading.

1. Execute “while” Loop a Certain Number of Times

The while loop can execute a block of codes a certain number of times. For that, a condition has to be set to define how many times the loop will iterate. Follow the script below to see how the while loop is executed 6 times:

#!/bin/bash
number=1

# Iterate the loop for 6 times
while [ $number -le 6 ]
do
echo "Iterating loop for $number times"
(( number++ ))
done
EXPLANATION

The script is initiated by a variable number with a value of 1. The while [ $number -le 6 ] starts the while loop and continues as long as the number is less than or equal to 6. The echo command prints the “Iterating loop for $number times” in each iteration and the $number indicates the current iteration count.

After completing every iteration, the current iteration number is incremented by 1 for the (( number++ )) syntax. Finally, the loop ends when the condition is no longer true, that is if the number is greater than 6.

executing while loop 6 times

This picture shows that the script printed the string “Iterating loop for 1 times” in the first iteration. Thus, the loop runs 6 times.

2. Run “while” Loop Infinite Number of Times

This example shows how to run a while loop an infinite number of times using while : syntax. The loop executes indefinitely as the condition remains always true. Here’s the bash script to see how the while loop runs a statement for infinite times:

#!/bin/bash
while :
do
echo "Linuxsimply.com"
done
EXPLANATION

The infinite loop initiates with the while :. Then the loop continuously echoes “Linuxsimply.com” in the output terminal until it is explicitly terminated by pressing CTRL+C.

executing while loop indefinitely

As you can see, the while loop keeps printing the string Linuxsimply.com in the terminal since it is an infinite loop.

3. Read File Line With “while” Loop

To read a file line using a while loop, incorporate the read command with a while loop. The content of a file can be read line by line with this process. In this example, the filename will be taken as a command-line argument. The $1 indicates the first argument passed to the script. To know in detail, check the script below:

#!/bin/bash
filename=$1

# Read file line by line
while read line;
do
echo $line
done < $filename
EXPLANATION

The script initiates by assigning the value of the 1st command-line argument to the variable filename. Then while read line reads the entire content of the given file line by line. Finally, the echo command prints the file content to the console. The done < $filename redirects the input of the while loop from the standard input to the file specified by the filename.

Execute the script with ./read-line.sh file.txt and see the following output:

reading file line with while loop in bash

The picture shows each line of the file.txt file content read by the while loop. You can read any file content by replacing the file.txt with your desired filename.

4. Write File Content Using “while” Loop

Any text or content can be written into a file by utilizing the while loop and the read command. Within the while loop, the read command reads the file line entered by the user. To finish entering file input, press CTRL+D. The content can be appended to a specific file with the >> operator in bash.

Now, take a look at the following bash script to learn how to use the while loop to write file content:

#!/bin/bash
echo -n "Enter the filename to create: "
read filename
echo "Enter the content into the file $filename"
while read line
do
echo $line >> $filename
done
EXPLANATION

Here, the echo -n "Enter the filename to create: " will ask the user to enter a filename to create a file. Then the read command reads the user input. The echo "Enter the content into the file $filename" prompts the user to write the content into the file. After that, while read line continues to read the file content line by line until it is stopped by pressing CTRL+D and then appends each line in the specified file with the >> operator.

After running the script, type cat file.txt to display the file content in the terminal:

 bash while loop example for writing file content

You can see in the image that I started by creating a file named file.txt then I entered file content welcome to linuxsimply and hello world. After that, I pressed ENTER and CTRL+D to stop accepting user input. Lastly, the cat command displayed the file content.

5. Read Command-line Arguments Using “while” Loop

To read the command-line arguments in bash, use the getopts command within the while loop. This command parses the command-line options and their associated values. The while loop repeatedly calls the getopts command to parse each option individually. This procedure can be employed to read multiple options.

Here’s the bash script to see how the getopts command works with a while loop to read command-line arguments:

#!/bin/bash
while getopts "n:e:a:" OPT; do

case "${OPT}" in
n) name=${OPTARG} ;;
e) email=${OPTARG} ;;
a) age=${OPTARG} ;;
*) echo "Invalid option"
exit 1 ;;
esac
done
echo -e "My name is '$name'\nMy email ID:'$email'\nI am '$age' years old"
EXPLANATION

The while loop with a getopts command starts and continues as long as there are options to parse. These options are separated by the colon "n:e:a:" where n, e, and a take their corresponding value of the variables (name, email ID, age) entered by the user respectively.

Within the while loop, a case statement is used to check the current options value, and based on the value, it assigns them to the appropriate variable (name, email, age). If any invalid option encounters, the script echoes “Invalid option” and exits with an exit code 1. After parsing all the options, the script outputs the collected information of the user line by line due to the \n (make a new line).

Run the script to get the following output:

./command-arg.sh -n "smith" -e "[email protected]" -a "40"

reading command line arguments with while loop

You can see all the information of the user (name, email ID, age) in the output. You can read any information by replacing the value of the name, email, and age variable.

6. Skip a Specific Iteration in “while” Loop

This example shows how to skip a specific iteration in a while loop. For that, the continue command can be applied within the while loop. This statement continues the while loop without executing the iteration specified by a condition. Here’s how:

#!/bin/bash
number=0
while [ $number -lt 6 ]
do

# Increment the value of number by 1
(( number++ ))

if [[ $number == 2 ]]
then
continue
fi
echo "Iteration number: $number"
done
EXPLANATION

The script initiates with the variable number=0. The $number -lt 6 condition within the while loop states that the loop continues as long as the iteration number is less than 6. Then loop increments the variable number by 1 in each iteration.

The condition $number == 2 within the if statement checks whether the current number is 2. If true, it executes the continue command which means it skips the rest of the code for this particular iteration and proceeds to the next iteration. Finally, the script prints the “Iteration number: $number” in the terminal.

skipping iteration with continue command in while loop

Due to the continue command, it skips the Iteration number: 2 and continues the loop by printing the rest of the iterations.

7. Calculate Factorial Using “while” Loop

To calculate factorial using a while loop, the multiplication operator * is used inside the loop. The operator keeps multiplying the current value of the factorial and an input number to get the final result. Copy the script for calculating factorial:

#!/bin/bash
number=$1
factorial=1
while [ $number -gt 0 ]
do
factorial=$(( factorial * number ))
number=$(( number - 1 ))
done
echo "$factorial"
EXPLANATION

The script initiates with a number=$1 which means the variable number will take the value of the 1st argument as input. The factorial variable starts with a value of 1 and it will store the factorial calculation. while [ $number -gt 0 ] starts the while loop and continues as long as the number is greater than 0.

Inside the loop, factorial=$(( factorial * number )) multiplies the current value of the factorial and number and updates the factorial variable. number=$(( number - 1 )) decrements the number value by 1. Lastly, the echo "$factorial" prints the final value of the factorial.

Running the script with ./factorial.sh 5 shows the output as:

bash while loop example for calculating factorial

The image illustrates that 120 is the factorial of 5. You can compute any factorial of your choices with this script.

8. C-Style “while” Loop Example in Bash

This example shows how to use a C-style while loop in bash. As its name suggests, the C-style while loop basically follows the structure of the C programming language. The double parentheses (()) contain the condition in this style loop just like in the C programming language. However, it serves the same function as a basic bash while loop, there is only a syntactic difference.

Follow the script to learn more about the C-style while loop:

#!/bin/bash
i=0
while ((i <= 25))
do
echo $i
((i+=5))
done
EXPLANATION

First, the variable i is taken with a value of 0. The while ((i <= 25)) loop runs till the value of i is less than or equal to 25. The current value of i is echoed by the echo $i. ((i+=5)) indicates that the current number will increase by 5 after completing every iteration.

c-style while loop example in bash

As you can observe, the loop initiated by the value 0 and increased the number by 5 in each iteration and printed the number as long as it equals 25.

Practice Tasks on Bash “while” Loop Example

Do some practices to be an expert in bash while loop. Here are some tasks of bash while loop is given:

  1. Write a bash while loop script that starts to count from 1 and print a message 10 times.
  2. Create a bash script of a while loop that prints “Hello world” indefinitely.
  3. Suppose, you are Asim, your email ID: [email protected], and your age is 25 years old. Now, create a script that reads your information as command-line arguments and gives you the collected information in the terminal.
  4. Write a C-style while loop that prints all the even numbers from 0 to 10.

Conclusion

In conclusion, I have covered the 8 distinct examples of while loop in bash. A detailed explanation of each example is demonstrated above. I hope you now have a better understanding of the various applications of the bash while loop. Enjoy your day!

People Also Ask

What is a while loop in Bash?

A while loop in Bash is a loop that executes a block of statements repeatedly as long as the specified condition is true. When the condition is false, the loop comes to an end. It helps to automate repetitive tasks.

What is the syntax of the while loop in Bash?

The syntax of the while loop is:

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

It will execute the statements over and over again till the specified condition remains true.

How to create an infinite while loop?

To create an infinite while loop, you can use a while true statement or while : structure. The infinite while loop runs forever as the condition always evaluates to true. The syntax of an infinite while loop is:

while true; do
#statements to be executed indefinitely
done

OR,

while : do
#statements to be executed indefinitely
done

How to break a while loop at a certain condition?

To break a while loop at a certain condition, you can use a break statement inside the condition. Here’s an example bash script for this:

#!/bin/bash
number=1
while :
do
if [ $number -gt 5 ]; then
break
fi
echo “$number”
((number++))
sleep 1s
done
echo “Break the loop”

After running the script, when the number becomes greater than 5, the loop breaks.

What is $1 in shell script?

In a shell script, $1 is a positional parameter that represents the passing of 1st argument to the shell script.

How to write a while loop with two conditions?

To write a while loop with two conditions, you can use the AND or OR operator to connect the conditions.

Here’s the syntax of the while loop with two conditions using the AND operator:

#!/bin/bash
while [ condition1 ] && [ condition2 ]; do
# Statement to be executed while both conditions are true
done

This script executes the statement if both conditions are true.

Here’s the syntax of the while loop with two conditions using the OR operator:

#!/bin/bash
while [ condition1 ] || [ condition2 ]; do
# Statement to be executed while at least one condition is true
done

This script executes the statement if at least one condition is true.

Related Articles


<< Go Back to “while” Loop in Bash | Loops in Bash | Bash Scripting Tutorial

Rate this post
Mitu Akter Mou

Hello, This is Mitu Akter Mou, currently working as a Linux Content Developer Executive at SOFTEKO for the Linuxsimply project. I hold a bachelor's degree in Biomedical Engineering from Khulna University of Engineering & Technology (KUET). Experiencing new stuff and gathering insights from them seems very happening to me. My goal here is to simplify the life of Linux users by making creative articles, blogs, and video content for all of them. Read Full Bio

Leave a Comment