Je suppose que cela peut vous aider?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Il tire parti de printf
la capacité de "auto-itérer" ses arguments tout en réutilisant sa chaîne de formatage sur chaque argument. Par printf
consé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 eval
commande pour les exécuter immédiatement.
printf
et les eval
commandes sont standard POSIX, ainsi que la substitution de commande.
Enfermant une telle commande dans un sous-shell comprenant un and-ed wait
comme 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 ping
commande 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 ping
s à la commande .
(aka source
) via la substitution de processus.