[unix] “if”에서 백그라운드로 작업 보내기

왜 이런거야?

if true; then sleep 3 &; fi
bash: syntax error near unexpected token `;'

나는 달리고 싶다

sleep 3

[ “sleep 3″은 예제 일 뿐이므로 백그라운드에서 “paralell”스타일로 실행되므로 더 빨리 완료됩니다. 그러나 나는 이것을 얻고있다 :

bash: syntax error near unexpected token `;'

에러 메시지. 왜? 백그라운드로 작업을 보낼 수없는 이유는 무엇입니까?



답변

이 경우 명령을 분리하지 않아도됩니다 ( &자체 분리).

예를 들어.

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok


답변

때문이다 &이미 문 분리 당신이 넣어해서는 안, ;이 후.


답변