Suponho que isso possa fazer por você?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Ele tira proveito da printf
capacidade de "iterar automaticamente" seus argumentos enquanto reutiliza sua cadeia de caracteres de formato sobre cada argumento. O printf
item acima, portanto, produz uma sequência de seqüências de ping <hostname> &
caracteres para cada host fornecido como argumento e alimenta essa sequência de comandos por meio da Substituição de Comando no eval
comando para executá-los imediatamente.
printf
e eval
comandos são padrão POSIX, bem como substituição de comandos.
Incluindo todo esse comando em um subshell compreendendo um e-ed wait
como este:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
fornece a capacidade de interromper tudo à vontade com um simples Ctrl+C.
Caso contrário, você pode controlar cada ping
comando individualmente através do controle de trabalho usual do shell.
Se o seu shell também oferece suporte para Substituições de Processo, você também pode usar o seguinte:
. <(printf 'ping "%s" & ' host1 host2 host3)
por alguns caracteres a menos para digitar.
A essência é a mesma que para o eval
, mas alimenta a sequência de ping
s para o comando .
(aka source
) através da Substituição de Processo.