Bird
Raised Fist0
Bash Scriptingscripting~10 mins

while loop in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - while loop
Initialize variable
↓
Check condition
|Yes↓
Execute loop body
↓
Update variable
Back to Check↓
Exit loop
↩Back to Check
The while loop starts by checking a condition. If true, it runs the loop body, updates variables, then checks again. It stops when the condition is false.
Execution Sample
Bash Scripting
count=1
while [ $count -le 3 ]
do
  echo "Count is $count"
  ((count++))
done
This script prints the count from 1 to 3 using a while loop.
Execution Table
Stepcount valueCondition [ $count -le 3 ]ActionOutput
11TruePrint 'Count is 1', increment count to 2Count is 1
22TruePrint 'Count is 2', increment count to 3Count is 2
33TruePrint 'Count is 3', increment count to 4Count is 3
44FalseExit loop
💡 count reaches 4, condition 4 <= 3 is False, loop stops
Variable Tracker
VariableStartAfter 1After 2After 3Final
count12344
Key Moments - 2 Insights
Why does the loop stop when count is 4 even though the loop body increments count after printing?
The condition is checked before the loop body runs each time. When count is 4, the condition [ $count -le 3 ] is false, so the loop exits before printing or incrementing again, as shown in step 4 of the execution_table.
What happens if we forget to increment count inside the loop?
If count is never incremented, the condition stays true forever, causing an infinite loop. The execution_table shows count changing each step; without that, the loop never reaches the exit condition.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of count at step 3?
A4
B2
C3
D1
💡 Hint
Check the 'count value' column in row 3 of the execution_table.
At which step does the condition become false and the loop stops?
AStep 4
BStep 3
CStep 2
DStep 1
💡 Hint
Look at the 'Condition' column in the execution_table and find where it says False.
If we start count at 5 instead of 1, what happens to the loop?
AIt runs 3 times
BIt does not run at all
CIt runs once
DIt runs infinitely
💡 Hint
Refer to the variable_tracker and execution_table logic: condition is checked before loop body.
Concept Snapshot
while loop syntax in bash:
while [ condition ]
do
  commands
  update variables
 done

The loop runs as long as the condition is true.
Condition is checked before each iteration.
Remember to update variables to avoid infinite loops.
Full Transcript
This visual execution shows how a bash while loop works. We start with count=1. The loop checks if count is less or equal to 3. If yes, it prints the count and increments it. This repeats until count becomes 4, when the condition fails and the loop stops. The variable_tracker shows count changing from 1 to 4 step by step. Key points: the condition is checked before running the loop body, and forgetting to update count causes an infinite loop. The quiz questions help check understanding of count values and loop stopping conditions.

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