
Eu tenho 2 comandos que bloqueiam a entrada no console, então eles devem ser finalizados com CTRL+C. Não gosto de executá-los em segundo plano, pois perdi o controle da interrupção. Mas, caso contrário, não posso executá-los sequencialmente em uma linha, pois o primeiro comando aguarda o término antes do próximo início.
Deve haver um truque para isso no Unix. O que eu tento é algo como:
$ fg-wrapper infinite-cmd1 & infinite-cmd2
Executing cmd1 in bg
Executing cmd2 in bg
(Waiting for CTRL+C to end both)
Estou procurando um oneliner, não um script: fg-wrapper é o comando posix integrado que eu sonharia fornecer como exemplo (eu gostaria de não ter que fazer um script)
Responder1
Experimente isto:
#!/usr/bin/env bash
echo "Executing $1 in bg"
eval $1 &
echo "Executing $2 in bg"
eval $2 &
wait
Explicação:
$1
e $2
consulte o primeiro e o segundo argumento na linha de comando.
eval
executa esses comandos &
executando-os em segundo plano. Por fim, wait
espera que esses comandos terminem ou eles podem ser finalizados com CTRL-C.
Experimente este script com
./script "ping google.com > /dev/null" "ping 127.0.0.1 > /dev/null"