Я думаю, це може зробити для вас?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Він використовує printfможливість "автоматичного повторення" своїх аргументів, використовуючи повторно його рядок формату для кожного аргументу. Отже, вищезазначене printfстворює послідовність ping <hostname> &рядків для кожного хоста, наданого як аргумент, і подає таку послідовність команд через Command Substitution до evalкоманди, щоб негайно їх виконати.
printfі evalкоманди стандарт POSIX, а також командна заміна.
Закриття цілої такої команди в підшарці, що складається з та-ed, waitяк це:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
забезпечує можливість переривати все за бажанням простим Ctrl+C.
Крім того, ви можете керувати кожною pingкомандою поодиноко за допомогою звичайного керування завданнями оболонки.
Якщо у вашій оболонці є підтримка також замінників процесів, ви також можете скористатись такими:
. <(printf 'ping "%s" & ' host1 host2 host3)
на кілька символів менше набрати.
Суть є такою ж, як і для eval, але подає послідовність pings до команди .(aka source) через Process Substitution.