Suppongo che questo possa fare per te?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Sfrutta printf
la capacità di "iterare automaticamente" i suoi argomenti riutilizzando la stringa di formato su ogni argomento. Quanto sopra printf
produce quindi una sequenza di ping <hostname> &
stringhe per ciascun host fornito come argomento e alimenta tale sequenza di comandi tramite Command Substitution al eval
comando per farli eseguire immediatamente.
printf
e i eval
comandi sono standard POSIX, così come la sostituzione dei comandi.
Racchiudendo l'intero comando in una subshell comprendente un and-ed wait
come 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 ping
comando 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 ping
s al comando .
(aka source
) attraverso la sostituzione del processo.