Bash Loops
As with any other language, loops are very useful. With bash you can use for
loops, while
loops and until
loops.
For loops
Here is the structure of a for loop:
for var in ${list}
do
your_commands
done
Example:
#!/bin/bash
users="devdojo, bobby, tony"
for user in ${users}
do
echo "${user}"
done
You can also use for
to process a series of numbers, for example here is one way to loop through from 1 to 10:
#!/bin/bash
for num in {1..10}
do
echo ${num}
done
While loops
The structure of a while loop is quite similar to the for
loop:
while [ your_condition ]
do
your_conditions
done
Example:
#!/bin/bash
counter=1
while [[ $counter -le 10 ]]
do
echo $counter
((counter++))
done
Let's create a script that asks the user for their name and not allow an empty input:
#!/bin/bash
read -p "What is your name? " name
while [[ -z ${name} ]]
do
echo "Your name can not be blank, please enter a valid name!"
read -p "Enter your name again? " name
done
echo "Hi there ${name}"
Now if you run the above and just press enter without providing input, the loop would run again and ask you for your name again and again until you actually provide an input.
Until Loops
The difference between until
and while
loops is that the until
lool will run the commands within the loop until the condition becomes true.
Structure:
until [ your_condition ]
do
your_commands
done
Example:
#!/bin/bash
count=1
until [ $count -gt 10 ]
do
echo $count
((count++))
done
Continue and Break
As with other languages you can use continue
and break
with your bash scripts as well:
-
continue
tells your bash script to stop the current iteration of the loop and start the next iteration -
break
tells your bash script to end the loop straight away