Ich nehme an, das kann für Sie tun?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Es nutzt printf
die Möglichkeit, die Argumente automatisch zu iterieren, während die Formatzeichenfolge für jedes Argument erneut verwendet wird. Das Obige printf
erzeugt daher eine Folge von ping <hostname> &
Zeichenfolgen für jeden als Argument bereitgestellten Host und leitet diese Folge von Befehlen durch eval
Befehlsersetzung an den Befehl weiter, damit sie sofort ausgeführt werden.
printf
und eval
Befehle entsprechen dem POSIX-Standard sowie der Befehlssubstitution.
Füge den gesamten Befehl in eine Subshell ein, die ein und-ed wait
wie 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 ping
Befehl 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 ping
s über die Prozessersetzung an den .
(aka source
) -Befehl weiter.