Supongo que esto puede hacer por ti?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Aprovecha printf
la capacidad de "iterar automáticamente" sus argumentos mientras reutiliza su cadena de formato sobre cada argumento. Por lo printf
tanto, 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 eval
comando para que se ejecuten de inmediato.
printf
y los eval
comandos son estándar POSIX, así como la sustitución de comandos.
Incluyendo todo dicho comando en una subshell que comprende un and-ed wait
como 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 ping
comando 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 ping
s al comando .
(aka source
) a través de la sustitución del proceso.