100 votes

Travail de fond en boucle

J'essaie d'exécuter un travail en arrière-plan dans une boucle for en bash :

for i in $(seq 3); do echo $i ; sleep 2 & ; done

Je reçois une erreur :

bash: syntax error near unexpected token `;'

Dans zsh, la ligne de commande fonctionne.

150voto

gammay Points 1002

Retirez le ; après le sommeil

for i in $(seq 3); do echo $i ; sleep 2 & done

BTW, de telles boucles sont mieux écrites sur des lignes séparées avec une indentation appropriée (si vous écrivez ceci dans un fichier shell script).

for i in $(seq 3)
do
   echo $i
   sleep 2 &
done

46voto

sogart Points 56

Vous pouvez mettre la commande de fond dans ( )

for i in $(seq 3); do echo $i ; (sleep 2 &) ; done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X