Tôi cho rằng điều này có thể làm cho bạn?
eval $(printf 'ping "%s" & ' host1 host2 host3)
Nó tận dụng printf
khả năng "tự động lặp lại" các đối số của nó trong khi sử dụng lại chuỗi định dạng của nó qua từng đối số. printf
Do đó, ở trên tạo ra một chuỗi các ping <hostname> &
chuỗi cho mỗi máy chủ được cung cấp làm đối số và cung cấp chuỗi lệnh đó thông qua Thay thế eval
lệnh cho lệnh để chúng được thực thi ngay lập tức.
printf
và eval
các lệnh là tiêu chuẩn POSIX, cũng như thay thế lệnh.
Bao gồm toàn bộ lệnh như vậy trong một khung con bao gồm một và ed wait
như thế này:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
cung cấp khả năng làm gián đoạn mọi thứ theo ý muốn một cách đơn giản Ctrl+C.
Khác, bạn có thể điều khiển từng ping
lệnh một cách đơn lẻ thông qua kiểm soát công việc thông thường của shell.
Nếu trình bao của bạn cũng hỗ trợ cho Thay thế quy trình, bạn cũng có thể sử dụng như sau:
. <(printf 'ping "%s" & ' host1 host2 host3)
cho một vài ký tự ít để gõ.
Ý chính tương tự như đối với eval
, nhưng cung cấp chuỗi ping
s cho lệnh .
(aka source
) thông qua Thay thế quy trình.