Parece que você não precisa separar comandos nesse caso ( &
os separou).
Por exemplo.
$> if true; then (sleep 3; echo ok) & fi
[1] 14224
$> ok
Por que isso?
if true; then sleep 3 &; fi
bash: syntax error near unexpected token ';'
Eu quero correr
sleep 3
em segundo plano, de modo que o comando ["sleep 3" seja apenas um exemplo] seria executado no estilo "paralell", por isso termina mais rápido. Mas eu estou entendendo isso:
bash: syntax error near unexpected token ';'
mensagem de erro. Por quê? Por que não posso enviar uma tarefa para o segundo plano?
É porque &
já é um separador de instruções, portanto, você não deve colocar ;
depois disso.
Tags bash shell control-flow