Enviar tarefa para segundo plano em um “if”

8

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?

    
por LanceBaynes 10.12.2011 / 12:28

2 respostas

6

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 10.12.2011 / 12:34
8

É porque & já é um separador de instruções, portanto, você não deve colocar ; depois disso.

    
por 10.12.2011 / 12:33