Como escrever um loop for que executa um comando assíncrono em cada iteração?

21

Eu me pergunto por que há um erro ao usar um comando assíncrono em um loop?

$ for i in {1..8}; do sleep 100 & ; done
bash: syntax error near unexpected token ';'

Se eu escrevê-lo como

$ for i in {1..8}; do 
> sleep 100 & 
> done

isso funciona bem.

Como posso escrevê-lo em uma linha sem erro?

    
por Tim 18.09.2017 / 15:40

2 respostas

37

Solte o ; :

for i in {1..8}; do sleep 100 & done

& separa os comandos , então o ; é irrelevante (e o shell espera algo entre & e ; ).

    
por 18.09.2017 / 15:42
21

Group suas ações do em chaves:

for i in {1..8}; do { sleep 100 & }; done

Fácil de entender para você e para o Bash!

    
por 18.09.2017 / 16:02

Tags