Me gustaría ejecutar varios comandos en bash, pero algunos de ellos se ejecutan en segundo plano. La mejor manera de explicar esto es usando el siguiente comando que no funciona...
for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand
Supongo que esto podría tomarse como dos preguntas:
- ¿Cómo terminar el & en un comando?
- ¿Cuál sería una mejor manera de hacer esto?
Otros detalles si son importantes:
- Uso abierto 13.2
- gnomo-shell
Respuesta1
Deberías intentarlo
(sleep 5; ls) & echo "Now"
Esto funciona como usted desea.
Respuesta2
Todo lo que necesitas hacer es eliminar el ;
. &
actúa como un separador de comandos por sí mismo, por lo que agregar ;
después de eso no es válido.
(sleep 30; command1; command2 param ) & anotherCommand
(Los espacios después del punto y coma no son necesarios, simplemente me resulta más fácil leerlos de esta manera. Este es uno de los pocos lugares donde los espacios son opcionales en la sintaxis del shell; en la mayoría de los lugares, son obligatorios o prohibidos).
En cuanto a mejores formas de hacer esto... eso realmente depende exactamente de lo que estás tratando de hacer. Necesitaríamos más información para hacer mejores sugerencias.