Estou online ZSH_VERSION=5.9
e tenho este script que funciona como esperado:
integer count=3
while true ; do
echo $count
(( count-- ))
if (( count == 0 )) break
done
echo Finally: $count
echo ok
Ele faz a contagem regressiva de 3
até 1
e então diz: Finally: 0
e ok
.
Mas vamos substituir o do ... done
bloco por um { ... }
como este:
integer count=3
while true ; {
echo $count
(( count-- ))
if [[ $count == 0 ]] break
}
echo Finally: $count
echo ok
Não há absolutamente nenhuma mensagem de erro, mas a saída é confusa:
3
Finally: 2
ok
2
Finally: 1
ok
1
Não tenho a mínima ideia do porquê disso, exceto que o analisador tem um problema. Ou estou usando a sintaxe alternativa while-loop errada? Isso acontece quando estou em um shell recém-iniciado.