ฉันคิดว่าสิ่งนี้สามารถทำเพื่อคุณ?
eval $(printf 'ping "%s" & ' host1 host2 host3)
มันใช้ประโยชน์จากprintfความสามารถในการ "ทำให้ซ้ำอัตโนมัติ" ข้อโต้แย้งของมันในขณะที่ใช้สตริงรูปแบบของมันมากกว่าแต่ละอาร์กิวเมนต์ printfดังนั้นข้างต้นจะสร้างลำดับของping <hostname> &สตริงสำหรับแต่ละโฮสต์ที่จัดไว้ให้เป็นอาร์กิวเมนต์และดึงข้อมูลลำดับของคำสั่งดังกล่าวผ่านการทดแทนevalคำสั่งไปยังคำสั่งเพื่อให้พวกเขาดำเนินการทันที
printfและevalคำสั่งเป็นมาตรฐาน POSIX เช่นเดียวกับการทดแทนคำสั่ง
ล้อมรอบคำสั่งดังกล่าวทั้งหมดใน subshell ประกอบด้วยและ -ed waitเช่นนี้:
(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)
Ctrl+Cให้ความสามารถในทุกอย่างที่จะขัดจังหวะด้วยง่าย
มิฉะนั้นคุณสามารถควบคุมแต่ละpingคำสั่งอย่างแปลกประหลาดผ่านการควบคุมงานตามปกติของเชลล์
หากเชลล์ของคุณรองรับการทดแทนกระบวนการด้วยคุณอาจใช้สิ่งต่อไปนี้:
. <(printf 'ping "%s" & ' host1 host2 host3)
เพื่อให้พิมพ์ได้ไม่กี่ตัวอักษร
ส่วนสำคัญเป็นเช่นเดียวกับสำหรับevalแต่ฟีดลำดับของpings ไปยังคำสั่ง.(aka source) ผ่านการทดแทนกระบวนการ