De help let
:
Exit Status:
If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise..
Como var++
é pós -increment, acho que o último argumento faz avaliar como zero. Sutil ...
Uma ilustração talvez mais clara:
$ let x=-1 ; echo x=$x \$?=$?
x=-1 $?=0
$ let x=0 ; echo x=$x \$?=$?
x=0 $?=1
$ let x=1 ; echo x=$x \$?=$?
x=1 $?=0
$ let x=2 ; echo x=$x \$?=$?
x=2 $?=0