Bird
Raised Fist0
Bash Scriptingscripting~10 mins

while loop 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 print numbers from 1 to 5 using a while loop.

Bash Scripting
#!/bin/bash
count=1
while [ $count [1] 6 ]
do
  echo $count
  ((count++))
done
Drag options to blanks, or click blank then click option'
A-eq
B-gt
C-lt
D-ne
Attempts:
3 left
💡 Hint
Common Mistakes
Using -gt (greater than) will cause the loop not to run as expected.
Using -eq (equal) will only run if count equals 5, which is not the goal.
2fill in blank
medium

Complete the code to stop the loop when the user enters 'exit'.

Bash Scripting
#!/bin/bash
input=""
while [ "$input" != "exit" ]
do
  read -p "Type something (or 'exit' to quit): " [1]
done
Drag options to blanks, or click blank then click option'
Aanswer
Btext
Cline
Dinput
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different variable name than the one in the condition causes the loop to never end.
Forgetting to quote the variable in the condition can cause errors.
3fill in blank
hard

Fix the error in the loop condition to correctly check if count is less than or equal to 10.

Bash Scripting
#!/bin/bash
count=1
while [ $count [1] 10 ]
do
  echo $count
  ((count++))
done
Drag options to blanks, or click blank then click option'
A-le
B-eq
C-lt
D-ge
Attempts:
3 left
💡 Hint
Common Mistakes
Using -lt will stop the loop before count reaches 10.
Using -ge or -eq will cause the loop to behave incorrectly.
4fill in blank
hard

Fill both blanks to create a loop that prints even numbers from 2 to 10.

Bash Scripting
#!/bin/bash
num=2
while [ $num [1] 10 ]
do
  echo $num
  num=$((num [2] 2))
done
Drag options to blanks, or click blank then click option'
A-le
B+
C-
D-lt
Attempts:
3 left
💡 Hint
Common Mistakes
Using -lt will exclude 10 from the output.
Subtracting 2 will cause an infinite loop.
5fill in blank
hard

Fill all three blanks to create a loop that counts down from 5 to 1 and prints each number.

Bash Scripting
#!/bin/bash
count=5
while [ $count [1] 0 ]
do
  echo [2]
  count=[3]
done
Drag options to blanks, or click blank then click option'
A-gt
B$count
C$((count - 1))
D-lt
Attempts:
3 left
💡 Hint
Common Mistakes
Using -lt will cause the loop to never run.
Not decreasing count will cause an infinite loop.

Practice

(1/5)
1. What does a while loop do in a bash script?
easy
A. Stops the script immediately
B. Runs commands only once
C. Executes commands only if a condition is false
D. Repeats commands as long as a condition is true

Solution

  1. Step 1: Understand the purpose of a while loop

    A while loop runs repeatedly while its condition remains true.
  2. Step 2: Compare options with the definition

    Only Repeats commands as long as a condition is true correctly describes this behavior.
  3. Final Answer:

    Repeats commands as long as a condition is true -> Option D
  4. Quick Check:

    while loop = repeat while true [OK]
Hint: While loops run repeatedly while condition is true [OK]
Common Mistakes:
  • Thinking while loops run only once
  • Confusing while with if statements
  • Assuming it runs when condition is false
2. Which of the following is the correct syntax to start a while loop in bash?
easy
A. while [ condition ]; do
B. while ( condition ) {
C. while condition then
D. while { condition } do

Solution

  1. Step 1: Recall bash while loop syntax

    The correct syntax uses square brackets for condition and 'do' keyword.
  2. Step 2: Match options with correct syntax

    while [ condition ]; do matches the correct bash syntax: while [ condition ]; do.
  3. Final Answer:

    while [ condition ]; do -> Option A
  4. Quick Check:

    Correct bash while syntax = while [ condition ]; do [OK]
Hint: Use square brackets and 'do' to start while loop [OK]
Common Mistakes:
  • Using parentheses instead of square brackets
  • Missing 'do' keyword
  • Using curly braces incorrectly
3. What will be the output of this script?
count=1
while [ $count -le 3 ]; do
  echo $count
  count=$((count + 1))
done
medium
A. 1 2 3 4
B. 1 2 3
C. 3 2 1
D. No output

Solution

  1. Step 1: Analyze the loop condition and increments

    The loop starts with count=1 and runs while count is less or equal to 3, incrementing count by 1 each time.
  2. Step 2: Trace the output for each iteration

    It prints 1, then 2, then 3, then stops because count becomes 4.
  3. Final Answer:

    1 2 3 -> Option B
  4. Quick Check:

    Loop prints 1 to 3 [OK]
Hint: Count increments until condition false, prints each value [OK]
Common Mistakes:
  • Forgetting to increment count causing infinite loop
  • Expecting output beyond 3
  • Confusing loop condition operators
4. Identify the error in this script:
count=1
while [ $count -lt 5 ]
  echo $count
  count=$((count + 1))
done
medium
A. Wrong comparison operator '-lt'
B. Incorrect variable increment syntax
C. Missing 'do' keyword after while condition
D. Missing closing bracket in condition

Solution

  1. Step 1: Check while loop syntax

    The while loop must have 'do' after the condition to start the loop body.
  2. Step 2: Identify missing 'do'

    The script misses 'do' after the condition line, causing syntax error.
  3. Final Answer:

    Missing 'do' keyword after while condition -> Option C
  4. Quick Check:

    while loop needs 'do' [OK]
Hint: Always put 'do' after while condition [OK]
Common Mistakes:
  • Omitting 'do' keyword
  • Misplacing brackets
  • Incorrect increment syntax
5. You want to write a bash script that prints all even numbers from 2 to 10 using a while loop. Which script correctly does this?
hard
A. num=1 while [ $num -le 10 ]; do if [ $((num % 2)) -eq 0 ]; then echo $num; fi num=$((num + 1)) done
B. num=2 while [ $num -le 10 ]; do echo $num num=$((num + 1)) done
C. num=2 while [ $num -lt 10 ]; do echo $num num=$((num + 2)) done
D. num=0 while [ $num -le 10 ]; do echo $num num=$((num + 2)) done

Solution

  1. Step 1: Understand the goal

    We want to print even numbers from 2 to 10 inclusive.
  2. Step 2: Check each option's logic

    num=2 while [ $num -le 10 ]; do echo $num num=$((num + 1)) done starts at 2 and increments by 1 up to 10, printing 2 3 4 5 6 7 8 9 10 - incorrect.
    num=1 while [ $num -le 10 ]; do if [ $((num % 2)) -eq 0 ]; then echo $num; fi num=$((num + 1)) done starts at 1, increments by 1, and prints only if even - correct.
    num=2 while [ $num -lt 10 ]; do echo $num num=$((num + 2)) done stops before 10, missing 10.
    num=0 while [ $num -le 10 ]; do echo $num num=$((num + 2)) done starts at 0, which is even but outside requested range (2 to 10).
  3. Step 3: Choose the best option

    Only the script using modulo to explicitly check evenness prints exactly 2,4,6,8,10.
  4. Final Answer:

    num=1 while [ $num -le 10 ]; do if [ $((num % 2)) -eq 0 ]; then echo $num; fi num=$((num + 1)) done -> Option A
  5. Quick Check:

    Check even with modulo inside loop [OK]
Hint: Use modulo inside loop to print even numbers [OK]
Common Mistakes:
  • Stopping loop before 10
  • Starting from 0 when 2 is required
  • Not checking evenness explicitly
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