3.5 KiB
Loops
Loops are fundamental for automation. Bash provides for, while, and until loops to repeat commands efficiently.
For Loops
The for loop iterates through a list of items.
for var in ${list}
do
your_commands
done
Example: Loop through a list of users.
touch for_users.sh
Open for_users.sh and add:
#!/usr/bin/env bash
users="Dev Team Six softwareshinobi troy"
for user in ${users}
do
echo "${user}"
done
Save and exit. Make it executable and run:
chmod +x for_users.sh
./for_users.sh
Output:
Dev Team Six
softwareshinobi
troy
Loop through a range of numbers:
touch for_numbers.sh
Open for_numbers.sh and add:
#!/usr/bin/env bash
for num in {1..10}
do
echo ${num}
done
Save, make executable, and run.
While Loops
A while loop continues as long as its condition remains true.
while [[ your_condition ]]
do
your_commands
done
Example: Counter from 1 to 10.
touch while_counter.sh
Open while_counter.sh and add:
#!/usr/bin/env bash
counter=1
while [[ $counter -le 10 ]]
do
echo $counter
((counter++)) # Increment counter
done
Save, make executable, run.
Example: Require user input. Loop until a non-empty name is provided.
touch while_input.sh
Open while_input.sh and add:
#!/usr/bin/env bash
read -p "What is your name? " name
while [[ -z "${name}" ]]
do
echo "Name cannot be blank. Please enter a valid name!"
read -p "Enter your name again: " name
done
echo "Hi there ${name}!"
Save, make executable, run (test with empty and valid input).
Until Loops
An until loop runs until its condition becomes true.
until [[ your_condition ]]
do
your_commands
done
Example: Counter from 1 to 10.
touch until_loop.sh
Open until_loop.sh and add:
#!/usr/bin/env bash
count=1
until [[ $count -gt 10 ]]
do
echo $count
((count++))
done
Save, make executable, run.
Continue and Break
Control loop flow with continue (skip current iteration) and break (exit loop entirely).
continue
touch continue_example.sh
Open continue_example.sh and add:
#!/usr/bin/env bash
for i in 1 2 3 4 5
do
if [[ $i -eq 2 ]]; then
echo "Skipping number 2"
continue # Skip to next iteration
fi
echo "i is equal to $i"
done
Save, make executable, run.
break
touch break_example.sh
Open break_example.sh and add:
#!/usr/bin/env bash
num=1
while [[ $num -lt 10 ]]; do
if [[ $num -eq 5 ]]; then
break # Exit loop
fi
((num++))
done
echo "Loop completed. Num stopped at: $num"
Save, make executable, run.
For nested loops, break N exits N levels of loops. break 2 exits the current and the parent loop.
touch nested_break_example.sh
Open nested_break_example.sh and add:
#!/usr/bin/env bash
for (( a = 1; a < 3; a++ )); do # Outer loop
echo "Outer loop: $a"
for (( b = 1; b < 5; b++ )); do # Inner loop
if [[ $b -gt 2 ]]; then
echo " Breaking inner and outer loop at b=$b"
break 2 # Exits both loops
fi
echo " Inner loop: $b"
done
done
echo "All loops finished."
Save, make executable, run.