ฉันต้องการประมวลผลไฟล์จำนวนมากและเนื่องจากฉันมีแกนประมวลผลที่นี่ฉันต้องการทำแบบขนาน:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
ฉันรู้จักโซลูชัน Makefile แต่คำสั่งของฉันต้องการอาร์กิวเมนต์จากรายการ globbing เชลล์ สิ่งที่ฉันพบคือ:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
หากต้องการใช้งานสิ่งที่ต้องทำคือใส่ & หลังงานและการเรียก pwait พารามิเตอร์กำหนดจำนวนของกระบวนการแบบขนาน:
> for i in *; do
> do_something $i &
> pwait 10
> done
แต่มันใช้งานไม่ได้ดีมากเช่นฉันลองด้วยเช่นสำหรับการวนซ้ำการแปลงไฟล์จำนวนมาก แต่ให้ข้อผิดพลาดและเลิกงาน
ฉันไม่อยากจะเชื่อเลยว่านี่ยังไม่เสร็จเนื่องจากการสนทนาในรายชื่อผู้รับจดหมาย zsh นั้นเก่ามาก แล้วคุณจะรู้อะไรดีกว่านี้อีกไหม?
echo "DONE"
หลังจากวนรอบซึ่งถูกเรียกใช้ก่อนที่งานที่แอ็คทีฟจะไม่เสร็จ => นี่ทำให้ฉันคิดว่างานไม่ได้ทำ