Supongo que esto puede hacer por ti?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Aprovecha printfla capacidad de "iterar automáticamente" sus argumentos mientras reutiliza su cadena de formato sobre cada argumento. Por lo printftanto, lo anterior produce una secuencia de ping <hostname> &cadenas para cada host proporcionado como argumento, y alimenta dicha secuencia de comandos a través del comando Substitución al evalcomando para que se ejecuten de inmediato.
printfy los evalcomandos son estándar POSIX, así como la sustitución de comandos.
Incluyendo todo dicho comando en una subshell que comprende un and-ed waitcomo este:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
proporciona la capacidad de interrumpir todo a voluntad con un simple Ctrl+C.
De lo contrario, puede controlar cada pingcomando individualmente a través del control de trabajo habitual del shell.
Si su shell también es compatible con las sustituciones de proceso, también puede usar lo siguiente:
. <(printf 'ping "%s" & ' host1 host2 host3)
por unos pocos caracteres menos para escribir.
La esencia es la misma que para el eval, pero alimenta la secuencia de pings al comando .(aka source) a través de la sustitución del proceso.