📖 Scenario: You want to tell your friends about your favorite fruits by listing them one by one.
🎯 Goal: Write a bash script that uses a for loop to go through a list of fruits and print each fruit on its own line.
📋 What You'll Learn
Create a list of fruits in a variable called fruits
Use a for loop to go through each fruit in fruits
Print each fruit inside the loop
💡 Why This Matters
🌍 Real World
Listing items and processing them one by one is common in scripts that manage files, users, or tasks.
💼 Career
Knowing how to use for loops in bash helps automate repetitive tasks in system administration and DevOps roles.
Progress0 / 4 steps
1
Create a list of fruits
Create a variable called fruits that contains these exact fruits separated by spaces: applebananacherry
Bash Scripting
Hint
Use quotes to assign multiple words to a variable in bash.
2
Set up a counter variable
Create a variable called count and set it to 0 to count how many fruits you print.
Bash Scripting
Hint
Just write count=0 on a new line.
3
Use a for loop to go through the fruits
Write a for loop using the variable fruit to go through each item in $fruits. Inside the loop, increase count by 1.
Bash Scripting
Hint
Use for fruit in $fruits; do ... done and count=$((count + 1)) inside.
4
Print each fruit inside the loop
Add a echo command inside the for loop to print the current fruit. Then print the total count after the loop.
Bash Scripting
Hint
Use echo "$fruit" inside the loop and echo "Total fruits: $count" after.
Practice
(1/5)
1. What does the following Bash code do?
for item in apple banana cherry; do echo $item; done
easy
A. Prints each fruit name on a new line
B. Prints all fruit names on the same line
C. Creates a list of fruits without printing
D. Causes a syntax error
Solution
Step 1: Understand the for loop structure
The loop goes through each word in the list: apple, banana, cherry.
Step 2: Check the command inside the loop
It prints each item using echo, so each fruit name appears on its own line.
Final Answer:
Prints each fruit name on a new line -> Option A
Quick Check:
Loop prints each item line by line = C [OK]
Hint: For loops print each list item one by one [OK]
Common Mistakes:
Thinking echo prints all items on one line
Confusing list iteration with variable assignment
Missing the do/done keywords
2. Which of these is the correct syntax for a Bash for loop over a list of words?
easy
A. loop item in apple banana cherry: echo $item
B. for (item in apple banana cherry) { echo $item }
C. for item in apple banana cherry; do echo $item; done
D. foreach item in apple banana cherry; echo $item; end
Solution
Step 1: Identify valid Bash for loop syntax
Bash uses: for variable in list; do commands; done
Step 2: Compare options
Only for item in apple banana cherry; do echo $item; done matches Bash syntax exactly; others use syntax from other languages or invalid forms.
Final Answer:
for item in apple banana cherry; do echo $item; done -> Option C
Quick Check:
Bash for loop syntax = D [OK]
Hint: Bash loops use 'for var in list; do ...; done' [OK]
Common Mistakes:
Using parentheses or braces like other languages
Using foreach or loop keywords not in Bash
Omitting do or done keywords
3. What is the output of this script?
for word in one two three; do echo "$word"; done
medium
A. one
two
three (each on its own line)
B. one\ntwo\nthree
C. one
two
three
D. one two three
Solution
Step 1: Understand the loop iteration
The loop runs three times, each time echoing one word: one, two, three.
Step 2: Understand echo output with quotes
Quotes preserve spaces but echo prints each word on a new line by default.
Final Answer:
one
two
three (each on its own line) -> Option A
Quick Check:
Echo prints each item on separate lines = A [OK]
Hint: Echo prints each loop item on its own line by default [OK]
Common Mistakes:
Thinking echo prints all items on one line
Confusing literal \n with newline
Ignoring quotes effect on output
4. Find the error in this Bash script:
for item apple banana cherry; do echo $item; done
medium
A. Missing semicolon after 'banana'
B. Variable name 'item' is invalid
C. Incorrect use of quotes around list items
D. Missing 'in' keyword after 'for item'
Solution
Step 1: Check for loop syntax
Bash requires 'for variable in list; do ...; done'. The 'in' keyword is missing here.
Step 2: Identify the error cause
Without 'in', Bash cannot parse the list, causing a syntax error.
Final Answer:
Missing 'in' keyword after 'for item' -> Option D
Quick Check:
For loop needs 'in' keyword = B [OK]
Hint: Always include 'in' after variable in for loops [OK]
Common Mistakes:
Forgetting the 'in' keyword
Adding unnecessary semicolons inside list
Misnaming variables with invalid characters
5. You want to print only the fruits that start with the letter 'b' from this list:
fruits="apple banana cherry blueberry"
for fruit in $fruits; do
# Fill condition here
echo "$fruit"
done
Which condition inside the loop correctly filters fruits starting with 'b'?
hard
A. if [ $fruit = 'b' ]; then
B. if [[ $fruit == b* ]]; then
C. if [[ $fruit =~ b* ]]; then
D. if [ $fruit == 'b*' ]; then
Solution
Step 1: Understand string pattern matching in Bash
Double brackets [[ ]] support pattern matching with == and wildcards like '*'.
Step 2: Check each condition
A uses [[ $fruit == b* ]] which matches strings starting with 'b'. B uses single brackets for exact 'b' match. C uses [[ $fruit =~ b* ]]; b* regex matches zero or more 'b's (including none), so every string. D uses single brackets which don't support patterns or ==.
Final Answer:
if [[ $fruit == b* ]]; then -> Option B
Quick Check:
Use [[ var == pattern* ]] for prefix match = A [OK]
Hint: Use [[ var == prefix* ]] to match string start in Bash [OK]
Common Mistakes:
Using single brackets with wildcard patterns
Confusing regex =~ with == operator
Comparing to exact string 'b' instead of prefix
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.