> ## Content Index
> Fetch the complete content index at: https://linuxhandbook.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Use While Loop in Bash
- URL: https://linuxhandbook.com/bash-while-loop/
- Published: 2023-07-27T15:31:29.000Z
- Updated: 2024-06-02T14:20:43.000Z
- Description: Learn to use the while loop in bash with practical examples in this tutorial.
- Author: Sagar Sharma
- Tags: Bash Tips

While running bash scripts, you'll come across times when you want to run tasks repeatedly such as printing the value of a variable in a specific pattern multiple times.

In this tutorial, I'm going to walk you through the following:

- The syntax of the while loop
- Multiple examples of the while loop

So let's start with the first one.

## How to use the while loop in bash

Like any other loop, while loop does have a condition statement and the condition is the crucial factor to iterate the loop.

See, whenever you start the loop, you have to give a condition to the loop, which will only be iterated until the condition is valid.

Such as you have one variable `a` having value 2\. And you want to use the loop till the value is increased to 10.

So in that case, what you'll do is specify a condition where the value of the variable should be equal to `10`, and in the code block section, you can use the incremental function which will increase the value in each interaction.

And to use the while loop, you can refer to the following syntax:

```
while condition
do
    #code-block
done
```

Let me break down the syntax for you.

- `condition` is a condition statement that will be checked every time before iterating the loop and if the condition is still true, then the loop will be iterated.
- `do` indicated the starting point of the loop body.
- `#code-block` is where you put the commands or code blocks which you want to execute until the specified condition is false.
- `done` marks the end of the loop body.

Still confused? Let's have a look at one simple example.

Here's a simple loop that prints from 1 to 10:

```
#!/bin/bash

counter=1

while [ $counter -le 10 ];
do
        echo $counter
        counter=$((counter+1))
done
```

Let's break it down.

- `counter=1`: It is a variable named `counter` that is initialized at 1.
- `[ $counter -le 10 ]`: It is a condition that means the loop will be iterated as long as the value of the `counter` variable is less or equal to 10.
- `echo $counter`: Prints the current value of the `counter` variable.
- `counter=$((counter+1))`: Increments the value of the `counter` variable by 1.

When executed, you can expect the following result:

![run script in Linux](https://linuxhandbook.com/content/images/2023/07/run-script-in-Linux.png)

Want more such examples? Here you have it!

### 1\. Create a timer using the while loop

Yep, you can create a timer using the while loop. 

Let me share the code first and then, I will explain it:

```
#!/bin/bash

seconds=10

while [ $seconds -gt 0 ]; do
    clear
    echo "Timer: $seconds seconds"
    sleep 1
    seconds=$((seconds-1))
done

echo "Timer up!"
```

First, I initialized the value of the `seconds` variable = 10.

- `[ $seconds -gt 0 ]` is a condition for a loop that checks whether the `seconds` variable is greater than 0 or not. If yes, then, it will initiate the loop.
- `clear`: A clear command is used to clear the terminal console.
- `sleep 1`: Sleep for one second.
- `seconds=$((seconds-1))`: Reduces the value of the `seconds` variable by 1.
- `echo`: Prints the given text or variable.

And if you were to execute the above script, you can expect the following result:

![](https://linuxhandbook.com/content/images/2023/07/timer-1.svg)

### 2\. Read files line by line 

There are times when you want to [read the content of the file line by line](https://linuxhandbook.com/bash-read-line-by-line/) and in that case, you can use the while loop as shown:

```
#!/bin/bash

filename="data.txt"

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

```

Here, the `filename` variable stores the name of the file which you want to read line by line.

- `IFS= read -r line` read the file line by line and store the data in the `line` variable. Read [more about IFS here](https://linuxhandbook.com/bash-ifs/).
- `echo $line` prints the value of the `line` variable.
- `done` marks the end statements of the loop.
- `< "$filename"` instructs loop to use the file from the `filename` variable.

📋

Make sure to interchange your file with the `data.txt` and to place it in the same directory as the script.

When executed, you can expect the following results:

![](https://linuxhandbook.com/content/images/2023/07/read-file-line-by-line-using-the-while-loop-in-bash.png)

### 3\. File line counter 

There are times when you have a file having thousands of lines but what if you want to count the number of the lines? You can use the while loop in that case:

```
#!/bin/bash

filename="example.txt"
line_count=0

while IFS= read -r line; do
    line_count=$((line_count + 1))
done < "$filename"

echo "Total lines: $line_count"
```

Here,

- `filename="example.txt"` means the `filename` variable stored the filename of the text file which you want to proceed for counting lines (example.txt in my case).
- `line_count=0`: The `line_count` variable was initialized at 0.
- `read -r line` reads each line from the file and stores it to the `line` variable.
- `line_count=$((line_count + 1))`: It will increase the value of the `line_count` variable each time the loop iterates.
- `< "$filename"`: It instructs the loop to use the file stored in the `$filename` variable.

And if you were to use the same script, you can expect the following:

![count number of lines in bash using the while loop](https://linuxhandbook.com/content/images/2023/07/count-number-of-lines-in-bash-using-the-while-loop.png)

## Like you, there are special variables too!

Did you know that there are [special variables in bash](https://linuxhandbook.com/bash-special-variables/)? 

Yep, there are 9 types of special variables in bash. Want to know what they are and how to use them? Here you go:

[Special Variables in Bash Shell \[With Script Examples\]The bash shell has some special variables that have specific usages and purposes. Learn more about them here.![](https://linuxhandbook.com/content/images/size/w256h256/2021/08/Linux-Handbook-New-Logo.png)Linux HandbookSagar Sharma![](https://linuxhandbook.com/content/images/2023/04/special-variables-in-bash-shell-scripting.png)](https://linuxhandbook.com/bash-special-variables/)

I hope you will find this guide helpful. And if you still have any doubts related to the while loop, feel free to ask in the comments.