
Tengo 2 comandos que se ejecutan bloqueando la entrada en la consola, por lo que deben finalizarse con CTRL+C. No me gusta ejecutarlos en segundo plano, ya que perdí el control por interrupción. Pero de lo contrario no puedo ejecutarlos secuencialmente en una sola línea ya que el primer comando espera la terminación antes de que comience el siguiente.
Debe haber un truco para esto en Unix. Lo que intento es algo como:
$ fg-wrapper infinite-cmd1 & infinite-cmd2
Executing cmd1 in bg
Executing cmd2 in bg
(Waiting for CTRL+C to end both)
Estoy buscando un oneliner, no un guión.: fg-wrapper es el comando posix integrado que soñaría con proporcionar como ejemplo (me gustaría no tener que escribirlo)
Respuesta1
Prueba esto:
#!/usr/bin/env bash
echo "Executing $1 in bg"
eval $1 &
echo "Executing $2 in bg"
eval $2 &
wait
Explicación:
$1
y $2
consulte el primer y segundo argumento en la línea de comando.
eval
ejecuta estos comandos &
ejecutándolos en segundo plano. Finalmente, wait
espera a que finalicen estos comandos o pueden finalizarse con CTRL-C.
Pruebe este script con
./script "ping google.com > /dev/null" "ping 127.0.0.1 > /dev/null"