Отправить задачу на задний план в «если»

10

Почему это?

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

Я хочу бежать

sleep 3

в фоновом режиме, так что команда ["sleep 3" является просто примером] будет выполняться в стиле "paralell", поэтому она завершается быстрее. Но я получаю это:

bash: syntax error near unexpected token `;'

сообщение об ошибке. Почему? Почему я не могу отправить задачу на задний план?

LanceBaynes
источник
Как вы думаете, что вы проверяете с ifзаявлением?
Гленн Джекман

Ответы:

6

Похоже, вам не нужно разделять команды в этом случае ( &разделяйте их сами).

Например.

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok
ДМИТРИЙ МАЛИКОВ
источник
8

Это потому, что &уже является разделителем операторов, поэтому вы не должны ставить ;после этого.

enzotib
источник