"if"에서 작업을 백그라운드로 보내기

"if"에서 작업을 백그라운드로 보내기

왜 이런거야?

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

나는 달리고 싶다

sleep 3

명령["sleep 3"은 단지 예임]이 "병렬"로 실행되어 더 빨리 완료되도록 백그라운드에서 실행합니다. 하지만 나는 이것을 얻습니다:

bash: syntax error near unexpected token `;'

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

답변1

이는 이미 명령문 구분 기호이므로 뒤에 넣으면 &안 됩니다 .;

답변2

이 경우 명령을 분리할 필요가 없는 것 같습니다( &스스로 분리).

예를 들어.

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

답변3

여러 줄로 작성해 보세요.

if true; then
  sleep 3 &
fi

관련 정보