Recibí el error:
bash: error de sintaxis cerca del token inesperado `; '
debido al siguiente comando:
evince foo.pdf bar.pdf &; emacs foo.tex &
¿Es ilegal separar comandos ;
cuando se usa &
para hacer un fondo de un trabajo? ¿O hay otra razón por la que esto no funcionó?
Gracias.
if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi
Por cierto, el problema central es que los shells (derivados de Bourne) no permiten comandos vacíos.
";" y "&" son terminadores de comando, lo que significa fg y bg respectivamente. Entonces "; ;" (o ";" al comienzo de una línea) tampoco es válido.
(Newline (s) implica ";" si hay un comando aún no terminado, a menos que use "\" para continuar la línea).
Los idiomas varían mucho en estas políticas:
Los lenguajes derivados de C permiten declaraciones vacías.
Pascal y PERL tienen separadores, no terminadores.
fuente
No, solo está confundido y no puede entender exactamente lo que quieres decir.
Debe agrupar el & con el comando que desea poner en segundo plano:
Eso funciona bien Aún más explícito sería:
Especialmente si también querías encadenar más comandos después del final.
fuente