
The Bash Increment That Killed My Script
My test script died silently after the first passing test. The culprit: ((var++)) combined with set -e.

My test script died silently after the first passing test. The culprit: ((var++)) combined with set -e.
Test script failed silently after first passing test. The script used set -e (exit on error) combined with bash arithmetic increment:
set -e
TESTS_PASSED=0
log_success() {
echo "[PASS] $1"
((TESTS_PASSED++)) # THIS CAUSES EXIT!
}
((TESTS_PASSED++)) returns exit code based on the POST-increment value:
TESTS_PASSED=0: ((0++)) evaluates to 0 (falsy) → exit code 1set -e sees exit code 1 → script exitsThis is a common bash gotcha that’s hard to debug because:
Use explicit arithmetic assignment instead:
log_success() {
echo "[PASS] $1"
TESTS_PASSED=$((TESTS_PASSED + 1)) # Safe - always returns 0
}
Never use ((var++)) with set -e. The increment operator’s return value is the pre-increment value, which is falsy when starting from 0.