Claro:
$ bash -c 'for ((i=0;i<10;i++)); do echo $i; ((i++)); done'
0
2
4
6
8
No for ((expr1; expr2; expr3)
, expr2
(e expr3
, se expr2
não falharam) são avaliados cada vez que o loop é executado. Com a outra forma, o bash inicia o loop após words
ter sido expandido (isso inclui a execução de substituição de comandos, globbing, etc.). Portanto, você não pode afetar os possíveis valores da variável de iteração ( name
) depois que o loop for iniciado. Você pode, claro:
$ bash -c 'for i; do echo $i; break; done' _ a b c
a