Suppongo che questo possa fare per te?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Sfrutta printfla capacità di "iterare automaticamente" i suoi argomenti riutilizzando la stringa di formato su ogni argomento. Quanto sopra printfproduce quindi una sequenza di ping <hostname> &stringhe per ciascun host fornito come argomento e alimenta tale sequenza di comandi tramite Command Substitution al evalcomando per farli eseguire immediatamente.
printfe i evalcomandi sono standard POSIX, così come la sostituzione dei comandi.
Racchiudendo l'intero comando in una subshell comprendente un and-ed waitcome questo:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
offre la possibilità di interrompere tutto a piacimento con un semplice Ctrl+C.
Altrimenti puoi controllare ogni pingcomando singolarmente attraverso il normale controllo del lavoro della shell.
Se la shell supporta anche le sostituzioni di processo, è possibile utilizzare anche quanto segue:
. <(printf 'ping "%s" & ' host1 host2 host3)
per pochi caratteri in meno da digitare.
L'essenza è la stessa di eval, ma alimenta la sequenza di pings al comando .(aka source) attraverso la sostituzione del processo.