Ich nehme an, das kann für Sie tun?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Es nutzt printfdie Möglichkeit, die Argumente automatisch zu iterieren, während die Formatzeichenfolge für jedes Argument erneut verwendet wird. Das Obige printferzeugt daher eine Folge von ping <hostname> &Zeichenfolgen für jeden als Argument bereitgestellten Host und leitet diese Folge von Befehlen durch evalBefehlsersetzung an den Befehl weiter, damit sie sofort ausgeführt werden.
printfund evalBefehle entsprechen dem POSIX-Standard sowie der Befehlssubstitution.
Füge den gesamten Befehl in eine Subshell ein, die ein und-ed waitwie folgt enthält :
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
bietet die Möglichkeit, alles mit einem einfachen nach Belieben zu unterbrechen Ctrl+C.
Ansonsten können Sie jeden pingBefehl einzeln über die normale Jobsteuerung der Shell steuern.
Wenn Ihre Shell auch Process Substitutions unterstützt, können Sie auch Folgendes verwenden:
. <(printf 'ping "%s" & ' host1 host2 host3)
für ein paar Zeichen weniger tippen.
Der Inhalt ist derselbe wie bei der eval, aber er gibt die Sequenz von pings über die Prozessersetzung an den .(aka source) -Befehl weiter.