While loops in Bash are powerful control flow structures that allow you to execute a block of code repeatedly as long as a specified condition is true. They are essential for automating repetitive tasks and processing data in shell scripts.
The basic syntax of a Bash while loop is as follows:
while [ condition ]
do
# Commands to be executed
done
The loop continues to execute the commands between do
and done
as long as the condition evaluates to true.
Here's a simple example that counts from 1 to 5:
count=1
while [ $count -le 5 ]
do
echo $count
count=$((count + 1))
done
This script will output the numbers 1 through 5, each on a new line.
While loops are often used to process input. Here's an example that reads lines from a file:
while read line
do
echo "Processing: $line"
# Add your processing logic here
done < input.txt
This script reads each line from input.txt
and echoes it with a "Processing:" prefix.
You can create an infinite loop using true
as the condition:
while true
do
echo "This will run forever unless interrupted"
sleep 1
done
Be cautious with infinite loops and ensure you have a way to exit them, such as using Ctrl+C
or incorporating a break statement.
While loops can be combined with other Bash features for more complex operations:
while IFS=: read -r username password uid gid info home shell
do
echo "User $username has UID $uid"
done < /etc/passwd
This example reads the /etc/passwd
file, splitting each line into fields and displaying user information.
Mastering while loops in Bash is crucial for effective shell scripting. They offer flexibility in handling repetitive tasks and processing data streams. Combined with other Bash constructs like if-else statements and functions, while loops become a powerful tool in your scripting arsenal.