Integer comparisons (-eq, -ne, -gt, -lt, -ge, -le) in Bash Scripting - Time & Space Complexity
When we use integer comparisons in bash scripts, it is helpful to know how the time to run these checks changes as we do more of them.
We want to understand how the number of comparisons affects the total time the script takes.
Analyze the time complexity of the following code snippet.
count=0
for i in $(seq 1 $n)
do
if [ "$i" -gt 10 ]; then
count=$((count + 1))
fi
done
This script counts how many numbers from 1 to n are greater than 10 using integer comparisons.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Integer comparison inside the if statement.
- How many times: The comparison runs once for each number from 1 to n, so n times.
Each time we increase n, the script does one more comparison.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 comparisons |
| 100 | 100 comparisons |
| 1000 | 1000 comparisons |
Pattern observation: The number of comparisons grows directly with n, so doubling n doubles the work.
Time Complexity: O(n)
This means the time to run the script grows in a straight line as the input size increases.
[X] Wrong: "Integer comparisons inside a loop are instant and don't add up."
[OK] Correct: Each comparison takes a small amount of time, and when done many times, these add up linearly with the number of items.
Understanding how simple operations like integer comparisons scale helps you write efficient scripts and explain your reasoning clearly in real situations.
"What if we replaced the loop with nested loops each doing integer comparisons? How would the time complexity change?"