Bird
Raised Fist0
Bash Scriptingscripting~5 mins

while loop in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: while loop
O(n)
Understanding Time Complexity

We want to understand how the time a while loop takes changes as the input size grows.

Specifically, how many times does the loop run when input gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


count=0
limit=100
while [ $count -lt $limit ]
do
  echo "Count is $count"
  ((count++))
done
    

This code prints numbers from 0 up to one less than the limit using a while loop.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The while loop runs the echo and increment commands repeatedly.
  • How many times: It runs once for each number from 0 up to limit minus one, so limit times.
How Execution Grows With Input

As the limit grows, the number of loop runs grows the same way.

Input Size (limit)Approx. Operations (loop runs)
1010
100100
10001000

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

Final Time Complexity

Time Complexity: O(n)

This means the time taken grows in a straight line as the input size increases.

Common Mistake

[X] Wrong: "The while loop runs a fixed number of times no matter the input."

[OK] Correct: The loop count depends on the limit variable, so if limit grows, the loop runs more times.

Interview Connect

Understanding how loops grow with input helps you explain script performance clearly and confidently.

Self-Check

"What if we changed the increment from 1 to 2 each time? How would the time complexity change?"

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