Je suppose que cela peut vous aider?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Il tire parti de printfla capacité de "auto-itérer" ses arguments tout en réutilisant sa chaîne de formatage sur chaque argument. Par printfconséquent, ce qui précède produit une séquence de ping <hostname> &chaînes pour chaque hôte fourni en argument, et transmet cette séquence de commandes via la substitution de commande à la evalcommande pour les exécuter immédiatement.
printfet les evalcommandes sont standard POSIX, ainsi que la substitution de commande.
Enfermant une telle commande dans un sous-shell comprenant un and-ed waitcomme ceci:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
offre la possibilité d'interrompre tout à volonté avec un simple Ctrl+C.
Sinon, vous pouvez contrôler chaque pingcommande individuellement via le contrôle de tâche habituel du shell.
Si votre shell prend également en charge les substitutions de processus, vous pouvez également utiliser les éléments suivants:
. <(printf 'ping "%s" & ' host1 host2 host3)
pour quelques caractères de moins à taper.
L'essentiel est le même que pour le eval, mais alimente la séquence de pings à la commande .(aka source) via la substitution de processus.