La expresion:
$ ksh -c 'for ((i=0;i<10;i++)){ echo $i;}'
0
1
2
3
4
funciona correctamente
No encuentro la descripción de esta sintaxis en la que se {...;}está reemplazando ; do ...; doneen el manual.
¿Hay alguna referencia en el manual? ¿Para qué conchas funciona eso correctamente?

Respuestas:
{ ...; }ya se aceptó en lugar dedo ...; doneenforbucles en la primera versión del shell Bourne en Unix V7 a finales de los 70 (ver el código fuente ) aunque nunca se documenta hasta donde sé.Todos
ksh(tanto el original derivado del shell Bourne como la reescritura de ksh93),pdksh¹ (y derivados)bash(desde el comienzo en 1989) y lozshadmiten. No sé de ningunaashderivada que lo haga.yashtampoco, peroyashfue escrito con el estándar POSIX.En
zsh, se agregó soporte con 2.0 en 1991, pero como parte de una nueva gama de formas cortas para la mayoría de las construcciones que va más allá de la sintaxis de Bourne. No es solofor i in 1 2; { ...; }, esfor i in 1 2; any-command(y sus variantes). Y está documentado allí y lo ha estado desde su introducción .AFAIK, al lado
zsh, solo pdksh lo documenta (para ambosforyselect).En cuanto al
((init; condition; action))formulario, proviene deksh93y fue copiado porzshybash.Ni eso
((...))ni lo{ ...; }en lugar dedo ...; doneson POSIX.Consulte también ¿Cuál es el propósito de la palabra clave "hacer" en Bash para bucles? para más
forformas de bucle.¹ ni versiones anteriores, ni el shell Forsyth en el que se basa. Se agregó en 5.1.1 en 1994 y eso probablemente explica por qué se documentó allí
fuente