Bird
Raised Fist0
Bash Scriptingscripting~10 mins

for loop (list-based) in Bash Scripting - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to loop over the list of fruits and print each one.

Bash Scripting
for fruit in [1]; do
  echo "$fruit"
done
Drag options to blanks, or click blank then click option'
A(apple banana cherry)
B"apple banana cherry"
Capple banana cherry
D[apple banana cherry]
Attempts:
3 left
💡 Hint
Common Mistakes
Using quotes around the list makes it a single string, not a list.
Using parentheses or brackets is not valid for list iteration in bash.
2fill in blank
medium

Complete the code to loop over the list and print each item in uppercase.

Bash Scripting
for item in apple banana cherry; do
  [1] "$item"
done
Drag options to blanks, or click blank then click option'
Aprintf
Becho
Ccut
Dtr '[:lower:]' '[:upper:]' <<<
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'echo' alone does not change case.
Using 'cut' does not change letter case.
3fill in blank
hard

Fix the error in the loop to correctly iterate over the list and print each element.

Bash Scripting
for i in [1]; do
  echo "$i"
done
Drag options to blanks, or click blank then click option'
A"apple banana cherry"
Bapple banana cherry
Capple,banana,cherry
D(apple banana cherry)
Attempts:
3 left
💡 Hint
Common Mistakes
Using commas breaks the list into one string.
Using quotes makes the entire list one item.
4fill in blank
hard

Fill both blanks to create a loop that prints only fruits with names longer than 5 letters.

Bash Scripting
for fruit in apple banana cherry date; do
  if [[ ${#fruit} [1] 5 ]]; then
    echo $[2]
  fi
done
Drag options to blanks, or click blank then click option'
A>
B"$fruit"
C<
Decho
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' would print fruits with names shorter than 5 letters.
Printing 'echo' instead of the variable name.
5fill in blank
hard

Fill all three blanks to create a loop that prints fruits in uppercase only if their name length is less than 7.

Bash Scripting
for fruit in apple banana cherry date; do
  if [[ ${#fruit} [1] 7 ]]; then
    [2] "$fruit" | [3] '[:lower:]' '[:upper:]'
  fi
done
Drag options to blanks, or click blank then click option'
A<
Becho
Ctr
D>
Attempts:
3 left
💡 Hint
Common Mistakes
Using '>' instead of '<' for the length check.
Using 'cut' or other commands instead of 'tr' for case conversion.

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

  1. Step 1: Understand the for loop structure

    The loop goes through each word in the list: apple, banana, cherry.
  2. Step 2: Check the command inside the loop

    It prints each item using echo, so each fruit name appears on its own line.
  3. Final Answer:

    Prints each fruit name on a new line -> Option A
  4. 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

  1. Step 1: Identify valid Bash for loop syntax

    Bash uses: for variable in list; do commands; done
  2. 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.
  3. Final Answer:

    for item in apple banana cherry; do echo $item; done -> Option C
  4. 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

  1. Step 1: Understand the loop iteration

    The loop runs three times, each time echoing one word: one, two, three.
  2. Step 2: Understand echo output with quotes

    Quotes preserve spaces but echo prints each word on a new line by default.
  3. Final Answer:

    one two three (each on its own line) -> Option A
  4. 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

  1. Step 1: Check for loop syntax

    Bash requires 'for variable in list; do ...; done'. The 'in' keyword is missing here.
  2. Step 2: Identify the error cause

    Without 'in', Bash cannot parse the list, causing a syntax error.
  3. Final Answer:

    Missing 'in' keyword after 'for item' -> Option D
  4. 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

  1. Step 1: Understand string pattern matching in Bash

    Double brackets [[ ]] support pattern matching with == and wildcards like '*'.
  2. 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 ==.
  3. Final Answer:

    if [[ $fruit == b* ]]; then -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard