Bird
Raised Fist0
Bash Scriptingscripting~5 mins

for loop with range ({1..10}) in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: for loop with range ({1..10})
O(n)
Understanding Time Complexity

We want to understand how the time it takes to run a bash for loop changes as we increase the number of items it goes through.

Specifically, how does the loop with a range like {1..10} behave when the range grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

for i in {1..10}
do
  echo "Number: $i"
done

This code runs a loop from 1 to 10 and prints each number.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The loop runs the echo command once for each number in the range.
  • How many times: Exactly as many times as the numbers in the range (10 times here).
How Execution Grows With Input

As the range grows, the number of times the loop runs grows the same way.

Input Size (n)Approx. Operations
1010 echo commands
100100 echo commands
10001000 echo commands

Pattern observation: The number of operations grows directly with the input size.

Final Time Complexity

Time Complexity: O(n)

This means the time to run the loop grows in a straight line with the number of items in the range.

Common Mistake

[X] Wrong: "The loop runs in constant time no matter how big the range is."

[OK] Correct: Each number in the range causes the loop to run once, so more numbers mean more work.

Interview Connect

Understanding how loops grow with input size is a key skill. It helps you explain how your scripts will behave with bigger data, which is important in real work.

Self-Check

"What if we changed the loop to run from 1 to 10 but printed only every second number? How would the time complexity change?"

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