Eu recebi o erro:
bash: erro de sintaxe próximo ao token inesperado `; '
devido ao seguinte comando:
evince foo.pdf bar.pdf &; emacs foo.tex &
É ilegal separar comandos ;
ao usar &
um plano de fundo para um trabalho? Ou há outro motivo para isso não funcionar?
Obrigado.
if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi
BTW, a questão principal é que os shells (derivados de Bourne) não permitem comandos vazios.
";" e "&" são terminadores de comando, significando fg e bg respectivamente. Então "; ;" (ou ";" no início de uma linha) também é inválido.
(As novas linhas implicam ";" se houver um comando ainda não finalizado, a menos que você use "\" para continuar a linha.)
Os idiomas variam muito nessas políticas:
Linguagens derivadas de C permitem declarações vazias.
Pascal e PERL têm separadores, não terminadores.
fonte
Não, é apenas confuso e não consegue entender exatamente o que você quer dizer.
Você precisa agrupar o & com o comando que deseja colocar em segundo plano:
Isso funciona bem. Ainda mais explícito seria:
Especialmente se você também quisesse encadear mais comandos após o final.
fonte