Comando Bash para ejecutar un conjunto de comandos en segundo plano en primer plano

Comando Bash para ejecutar un conjunto de comandos en segundo plano en primer plano

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:

$1y $2consulte el primer y segundo argumento en la línea de comando. evalejecuta estos comandos &ejecutándolos en segundo plano. Finalmente, waitespera 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"

información relacionada