Wyślij zadanie do tła w „jeśli”

10

Dlaczego to?

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

chcę biec

sleep 3

w tle, tak aby polecenie [„sen 3” było tylko przykładem] działało w stylu „równoległym”, więc kończy się szybciej. Ale dostaję to:

bash: syntax error near unexpected token `;'

Komunikat o błędzie. Dlaczego? Dlaczego nie mogę wysłać zadania w tło?

LanceBaynes
źródło
Jak myślisz, co testujesz ze ifstwierdzeniem?
glenn jackman

Odpowiedzi:

6

Wygląda na to, że nie musisz w tym przypadku rozdzielać poleceń ( &sam je rozdzielałeś).

Na przykład.

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok
ДМИТРИЙ МАЛИКОВ
źródło
8

Jest tak, ponieważ &jest już separatorem instrukcji, więc nie powinieneś ;po tym wstawiać .

enzotib
źródło