Saya kira ini bisa lakukan untuk Anda?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Itu mengambil keuntungan dari printf
kemampuan untuk "auto-iterate" argumennya sambil menggunakan kembali format string pada setiap argumen. printf
Oleh karena itu di atas menghasilkan urutan ping <hostname> &
string untuk setiap host yang disediakan sebagai argumen, dan mengumpankan urutan perintah tersebut melalui Substitusi Perintah ke eval
perintah agar segera dieksekusi.
printf
dan eval
perintah adalah standar POSIX, serta Substitusi Perintah.
Lampirkan seluruh perintah seperti itu dalam subkulit yang terdiri dari dan-ed wait
seperti ini:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
memberikan kemampuan untuk menginterupsi segalanya sesuka hati dengan yang sederhana Ctrl+C.
Jika tidak, Anda dapat mengontrol setiap ping
perintah secara tunggal melalui kontrol pekerjaan shell yang biasa.
Jika shell Anda juga memiliki dukungan untuk Substitusi Proses, Anda juga dapat menggunakan yang berikut:
. <(printf 'ping "%s" & ' host1 host2 host3)
untuk beberapa karakter kurang untuk mengetik.
Intinya sama dengan untuk eval
, tetapi mengumpankan urutan ping
s ke perintah .
(alias source
) melalui Proses Substitusi.