Bird
Raised Fist0
Bash Scriptingscripting~10 mins

C-style for loop in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - C-style for loop
Initialize variable
↓
Check condition
↓
Execute body
↓
Update variable
↩Back to Check condition
The loop starts by setting a variable, then checks a condition. If true, it runs the loop body, updates the variable, and repeats. If false, it stops.
Execution Sample
Bash Scripting
for ((i=0; i<3; i++)); do
  echo $i
done
This loop prints numbers 0, 1, and 2 by increasing i from 0 to 2.
Execution Table
Iterationi (before check)Condition (i<3)Body executedOutputi (after update)
10TrueYes01
21TrueYes12
32TrueYes23
43FalseNo
💡 i reaches 3, condition 3<3 is False, loop stops
Variable Tracker
VariableStartAfter 1After 2After 3Final
i01233
Key Moments - 3 Insights
Why does the loop stop when i equals 3?
Because the condition i<3 becomes false at iteration 4 (see execution_table row 4), so the loop does not run the body again.
When is the variable i updated in the loop?
i is updated after the loop body executes in each iteration (see execution_table column 'i (after update)').
What happens if the initial value of i is already 3?
The condition i<3 is false immediately, so the loop body never runs (like iteration 4 in the table).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of i before the condition check in iteration 3?
A2
B3
C1
D0
💡 Hint
Check the 'i (before check)' column in row 3 of the execution_table.
At which iteration does the loop condition become false?
AIteration 2
BIteration 3
CIteration 4
DIteration 1
💡 Hint
Look at the 'Condition (i<3)' column and find where it is False.
If we change the loop to for ((i=0; i<=3; i++)), how many times will the loop body execute?
A3 times
B4 times
C5 times
D2 times
💡 Hint
Think about the condition i<=3 and compare with the variable_tracker values.
Concept Snapshot
C-style for loop syntax in bash:
for (( init; condition; update )); do
  commands
 done

- init runs once at start
- condition checked before each iteration
- loop runs while condition is true
- update runs after each iteration
- useful for counting loops
Full Transcript
A C-style for loop in bash scripting starts by initializing a variable, then checks a condition before each loop run. If the condition is true, the loop body runs, then the variable updates. This repeats until the condition is false. For example, 'for ((i=0; i<3; i++))' prints 0, 1, and 2. The loop stops when i reaches 3 because the condition i<3 is no longer true. The variable i changes after each loop body execution. If i starts at 3, the loop never runs because the condition is false from the start.

Practice

(1/5)
1. What does the following C-style for loop do in bash?
for ((i=1; i<=3; i++)); do echo $i; done
easy
A. Prints numbers 1, 2, and 3 each on a new line
B. Prints numbers 0, 1, and 2 each on a new line
C. Prints numbers 1, 2, 3, and 4 each on a new line
D. Causes a syntax error

Solution

  1. Step 1: Understand the loop initialization and condition

    The loop starts with i=1 and runs while i is less than or equal to 3.
  2. Step 2: Analyze the increment and output

    Each iteration prints the current value of i, then increases i by 1 until i becomes 4 and stops.
  3. Final Answer:

    Prints numbers 1, 2, and 3 each on a new line -> Option A
  4. Quick Check:

    Loop from 1 to 3 prints 1, 2, 3 [OK]
Hint: Check start, end, and increment values carefully [OK]
Common Mistakes:
  • Starting loop at 0 instead of 1
  • Confusing <= with < in condition
  • Forgetting to increment i
2. Which of the following is the correct syntax for a C-style for loop in bash?
easy
A. for (i=0; i<5; i++) do echo $i; done
B. for ((i=0; i<5; i++)); do echo $i; done
C. for [i=0; i<5; i++] do echo $i; done
D. for {i=0; i<5; i++} do echo $i; done

Solution

  1. Step 1: Identify correct C-style for loop syntax in bash

    Bash requires double parentheses (( )) around the loop control with semicolons separating init, condition, and increment.
  2. Step 2: Check each option

    for ((i=0; i<5; i++)); do echo $i; done uses double parentheses and semicolons correctly; others use incorrect brackets or missing parentheses.
  3. Final Answer:

    for ((i=0; i<5; i++)); do echo $i; done -> Option B
  4. Quick Check:

    Double parentheses and semicolons = correct syntax [OK]
Hint: Look for double parentheses and semicolons inside [OK]
Common Mistakes:
  • Using single parentheses instead of double
  • Using square or curly brackets
  • Missing semicolons between parts
3. What is the output of this bash script?
for ((i=2; i<=6; i+=2)); do echo $i; done
medium
A. 2 3 4 5 6
B. Syntax error
C. 2 4 6 8
D. 2 4 6

Solution

  1. Step 1: Understand loop initialization and increment

    The loop starts at i=2, runs while i is less than or equal to 6, and increments i by 2 each time.
  2. Step 2: List values printed

    Values printed are 2, then 4, then 6. After 6, i becomes 8 which breaks the condition.
  3. Final Answer:

    2 4 6 -> Option D
  4. Quick Check:

    Increment by 2 from 2 to 6 prints 2,4,6 [OK]
Hint: Check increment step and loop condition carefully [OK]
Common Mistakes:
  • Assuming increment is 1 by default
  • Including numbers beyond the condition
  • Confusing <= with <
4. Identify the error in this bash C-style for loop:
for ((i=0; i<5 i++)); do echo $i; done
medium
A. Missing semicolon between condition and increment
B. Using single parentheses instead of double
C. Incorrect variable name
D. Missing do keyword

Solution

  1. Step 1: Check loop syntax parts

    The loop control must have three parts separated by semicolons: initialization, condition, and increment.
  2. Step 2: Locate missing semicolon

    Between 'i<5' and 'i++' there is no semicolon, causing a syntax error.
  3. Final Answer:

    Missing semicolon between condition and increment -> Option A
  4. Quick Check:

    Semicolons separate parts in C-style for loops [OK]
Hint: Check for three semicolon-separated parts inside (( )) [OK]
Common Mistakes:
  • Omitting semicolons between parts
  • Using single parentheses
  • Forgetting do keyword
5. You want to print all odd numbers from 1 to 9 using a C-style for loop in bash. Which script achieves this?
hard
A. for ((i=1; i<10; i++)); do if (( i % 2 == 0 )); then echo $i; fi; done
B. for ((i=0; i<10; i++)); do if (( i % 2 == 0 )); then echo $i; fi; done
C. for ((i=1; i<=9; i+=2)); do echo $i; done
D. All of the above

Solution

  1. Step 1: Analyze for ((i=1; i<=9; i+=2)); do echo $i; done

    for ((i=1; i<=9; i+=2)); do echo $i; done starts at 1, increments by 2, prints 1,3,5,7,9 directly.
  2. Step 2: Analyze options B and C

    Both loop with i++ and check if (( i % 2 == 0 )), which selects even numbers: B prints 0,2,4,6,8; C prints 2,4,6,8.
  3. Final Answer:

    for ((i=1; i<=9; i+=2)); do echo $i; done -> Option C
  4. Quick Check:

    Increment by 2 from 1 to <=9 prints odds 1-9 [OK]
Hint: Use increments or modulo checks to filter odd numbers [OK]
Common Mistakes:
  • Using wrong increment step
  • Starting from 0 without filtering
  • Forgetting to check odd condition
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