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?


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

8

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.