Por que não há um ;
caractere após do
em loops de shell quando escrito em uma única linha?
Aqui está o que quero dizer. Quando escrito em várias linhas, um for
loop se parece com:
$ for i in $(jot 2)
> do
> echo $i
> done
E em uma única linha:
$ for i in $(jot 2); do echo $i; done
Todas as linhas recolhidas recebem um ;
após elas , exceto a do
linha, e se você incluir o ;
, é um erro. Alguém provavelmente muito mais esperto do que eu decidiu que essa era a coisa certa a fazer por um motivo, mas não consigo descobrir qual é o motivo. Parece-me inconsistente.
O mesmo com while
loops também.
$ while something
> do
> anotherthing
> done
$ while something; do anotherthing; done