Envoyer la tâche en arrière-plan dans un «si»

10

Pourquoi est-ce?

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

je veux courir

sleep 3

en arrière-plan pour que la commande ["sleep 3" n'est qu'un exemple] s'exécute dans le style "parallèle", de sorte qu'elle se termine plus rapidement. Mais je comprends ceci:

bash: syntax error near unexpected token `;'

Message d'erreur. Pourquoi? Pourquoi ne puis-je pas envoyer une tâche en arrière-plan?

LanceBaynes
la source
Que pensez-vous que vous testez avec la ifdéclaration?
glenn jackman

Réponses:

6

Il semble que vous n'ayez pas besoin de séparer les commandes dans ce cas (les &séparer lui-même).

Par exemple.

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok
ДМИТРИЙ МАЛИКОВ
la source
8

C'est parce que &c'est déjà un séparateur d'instructions, vous ne devez donc pas le mettre ;après.

enzotib
la source