2 SC3005
Vidar Holen edited this page 2021-12-11 16:07:17 -08:00

In POSIX sh, arithmetic for loops are undefined.

Problematic code:

for ((i=0; i<10; i++))
do 
  echo "$i"
done

Correct code:

i=0
while [ "$i" -lt 10 ]
do 
  echo "$i"
  i=$((i+1))
done

Rationale:

C-style arithmetic for loops are a Ksh/Bash feature that's not supported by POSIX sh or dash. Use a while loop with separate initialization and incrementing instead.

Exceptions:

None

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!