각 반복마다 비동기 명령을 실행하는 for 루프를 작성하는 방법은 무엇입니까?

각 반복마다 비동기 명령을 실행하는 for 루프를 작성하는 방법은 무엇입니까?

루프 내에서 비동기 명령을 사용하면 오류가 발생하는 이유가 무엇인지 궁금합니다.

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

내가 다음과 같이 쓴다면

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

이것은 훌륭하게 작동합니다.

어떻게 하면 실수 없이 한 줄로 쓸 수 있나요?

답변1

삭제 ;:

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

&별도의 명령, 따라서 ;관련이 없습니다(그리고 쉘은 &과 사이의 무언가를 기대합니다 ;).

답변2

그룹do중괄호 안에서 수행하는 작업 :

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

당신과 Bash 모두 이해하기 쉽습니다!

관련 정보