Bird
Raised Fist0
Bash Scriptingscripting~10 mins

for loop with range ({1..10}) in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - for loop with range ({1..10})
Start
↓
Set range 1 to 10
↓
Pick next number in range
↓
Execute loop body with number
↓
More numbers?
Yes→Pick next number
No↓
End loop
The loop picks each number from 1 to 10 in order, runs the commands inside the loop for each number, then stops after 10.
Execution Sample
Bash Scripting
for i in {1..10}; do
  echo $i
done
Print numbers from 1 to 10, one per line.
Execution Table
Iterationi valueActionOutput
11echo $i1
22echo $i2
33echo $i3
44echo $i4
55echo $i5
66echo $i6
77echo $i7
88echo $i8
99echo $i9
1010echo $i10
--No more numbers in rangeLoop ends
💡 After printing 10, no more numbers in the range {1..10}, so loop stops.
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5After 6After 7After 8After 9After 10Final
iundefined12345678910undefined
Key Moments - 2 Insights
Why does the loop stop after printing 10?
Because the range {1..10} only includes numbers from 1 to 10. After 10, there are no more numbers to pick, so the loop ends as shown in the last row of the execution_table.
What happens if you change {1..10} to {3..5}?
The loop will only run for i=3, 4, and 5. The execution_table would have only three iterations instead of ten.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of i at iteration 5?
A6
B5
C4
D10
💡 Hint
Check the 'i value' column in the execution_table at iteration 5.
At which iteration does the loop stop running?
AAfter iteration 9
BAfter iteration 1
CAfter iteration 10
DIt never stops
💡 Hint
Look at the exit_note and the last row of the execution_table.
If the range changes to {1..3}, how many iterations will the loop run?
A3
B10
C1
D0
💡 Hint
The range {1..3} means numbers 1, 2, and 3 only, so check the variable_tracker for how many values i takes.
Concept Snapshot
for i in {start..end}; do
  commands using $i
 done

- Loops over numbers from start to end
- Runs commands once per number
- Stops after last number
- Simple way to repeat tasks with numbers
Full Transcript
This visual execution shows how a bash for loop with a range {1..10} works. The loop picks each number from 1 to 10 in order. For each number, it runs the commands inside the loop body. Here, it prints the number. The execution table lists each iteration with the current value of i and the output. The variable tracker shows how i changes from undefined to 1, then 2, up to 10, then back to undefined after the loop ends. Key moments explain why the loop stops after 10 and what happens if the range changes. The quiz questions test understanding of the loop variable values, when the loop stops, and how changing the range affects iterations.

Practice

(1/5)
1. What does the following Bash loop do?
for i in {1..5}; do echo $i; done
easy
A. Causes a syntax error
B. Prints numbers 1 to 5, each on a new line
C. Prints numbers 0 to 4, each on a new line
D. Prints the string '{1..5}' once

Solution

  1. Step 1: Understand the loop range syntax

    The loop uses {1..5}, which expands to numbers 1, 2, 3, 4, 5.
  2. Step 2: Check the loop body output

    Each iteration prints the current number, so numbers 1 to 5 print on separate lines.
  3. Final Answer:

    Prints numbers 1 to 5, each on a new line -> Option B
  4. Quick Check:

    Range {1..5} loops from 1 to 5 [OK]
Hint: Curly braces {1..5} generate numbers 1 to 5 [OK]
Common Mistakes:
  • Thinking {1..5} is a string, not a range
  • Confusing range start and end values
  • Expecting zero-based counting
2. Which of the following is the correct syntax to loop from 1 to 10 in Bash using brace expansion?
easy
A. for i in {1..10}; do echo $i; done
B. for i in [1..10]; do echo $i; done
C. for i in (1..10); do echo $i; done
D. for i in <1..10>; do echo $i; done

Solution

  1. Step 1: Identify correct brace expansion syntax

    Bash uses curly braces {start..end} for ranges, so {1..10} is correct.
  2. Step 2: Check other options for syntax errors

    Parentheses, square brackets, and angle brackets are invalid for this purpose in Bash loops.
  3. Final Answer:

    for i in {1..10}; do echo $i; done -> Option A
  4. Quick Check:

    Brace expansion uses curly braces {..} [OK]
Hint: Use curly braces {start..end} for ranges in Bash loops [OK]
Common Mistakes:
  • Using parentheses or brackets instead of braces
  • Missing the 'in' keyword
  • Forgetting to close the loop with 'done'
3. What is the output of this script?
for i in {3..6}; do echo $((i * 2)); done
medium
A. 2 4 6 8
B. 3 4 5 6
C. 6 8 10 12
D. Error: invalid arithmetic

Solution

  1. Step 1: Identify loop values

    The loop variable i takes values 3, 4, 5, 6 from {3..6}.
  2. Step 2: Calculate output for each iteration

    Each iteration prints i * 2: 3*2=6, 4*2=8, 5*2=10, 6*2=12.
  3. Final Answer:

    6 8 10 12 -> Option C
  4. Quick Check:

    Multiply each i by 2 [OK]
Hint: Multiply loop variable inside $(( )) for arithmetic [OK]
Common Mistakes:
  • Confusing loop values with output
  • Using single parentheses instead of $(( ))
  • Expecting space-separated output on one line
4. Find the error in this Bash loop:
for i in {1..5} do
echo $i
done
medium
A. Variable $i is not defined
B. Loop body must be on the same line as for
C. Brace expansion syntax is wrong
D. Missing semicolon or newline after {1..5}

Solution

  1. Step 1: Check for syntax correctness in loop header

    The for loop header must end with a semicolon or newline before 'do'. Here, 'do' follows directly after {1..5} without either, causing a syntax error.
  2. Step 2: Verify other parts

    Variable $i is defined by the loop, brace syntax is correct, and loop body can be on next lines.
  3. Final Answer:

    Missing semicolon or newline after {1..5} -> Option D
  4. Quick Check:

    Loop header must end properly before 'do' [OK]
Hint: Put semicolon or newline before 'do' in for loops [OK]
Common Mistakes:
  • Omitting semicolon or newline before 'do'
  • Misunderstanding brace expansion syntax
  • Thinking loop body must be on same line
5. You want to print only even numbers from 2 to 10 using a Bash for loop with brace expansion. Which script achieves this?
hard
A. for i in {2..10..2}; do echo $i; done
B. for i in {1..10}; do if [ $i % 2 == 0 ]; then echo $i; fi; done
C. for i in {2..10}; do echo $((i*2)); done
D. for i in {2..10..3}; do echo $i; done

Solution

  1. Step 1: Understand brace expansion with step

    Brace expansion supports {start..end..step}, so {2..10..2} generates even numbers 2,4,6,8,10.
  2. Step 2: Check other options

    B uses [ ] test which performs string comparison, not arithmetic modulo, so never prints evens; C multiplies numbers incorrectly to 4,6,8,10,12,14,16,18,20; D steps by 3, not 2.
  3. Final Answer:

    for i in {2..10..2}; do echo $i; done -> Option A
  4. Quick Check:

    Use {start..end..step} for stepped ranges [OK]
Hint: Use {start..end..step} to loop with steps in Bash [OK]
Common Mistakes:
  • Not using step in brace expansion
  • Multiplying loop variable instead of stepping
  • Using wrong step size
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