J'ai reçu l'erreur:
bash: erreur de syntaxe près du jeton inattendu `; '
en raison de la commande suivante:
evince foo.pdf bar.pdf &; emacs foo.tex &
Est-il illégal de séparer les commandes ;
lors de l'utilisation &
en arrière-plan d'un travail? Ou y a-t-il une autre raison pour laquelle cela n'a pas fonctionné?
Je vous remercie.
if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi
BTW, le problème principal est que les shells (dérivés de Bourne) n'autorisent pas les commandes vides.
";" et "&" sont des terminateurs de commande, signifiant respectivement fg et bg. Donc "; ;" (ou ";" au début d'une ligne) n'est pas non plus valide.
(Les sauts de ligne impliquent ";" s'il existe une commande non encore terminée, sauf si vous utilisez "\" pour continuer la ligne.)
Les langues varient beaucoup sur ces politiques:
Les langages dérivés de C autorisent les instructions vides.
Pascal et PERL ont des séparateurs, pas des terminateurs.
la source
Non, c'est juste confus et ne peut pas comprendre ce que vous voulez dire.
Vous devez regrouper le & avec la commande que vous souhaitez mettre en arrière-plan:
Ça marche bien. Encore plus explicite serait:
Surtout si vous souhaitez également enchaîner plus de commandes après la fin.
la source