Tôi muốn xử lý nhiều tệp và vì tôi đã ở đây một loạt các lõi nên tôi muốn làm song song:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Tôi biết một giải pháp Makefile nhưng các lệnh của tôi cần các đối số trong danh sách toàn cầu shell. Những gì tôi tìm thấy là:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
Để sử dụng nó, tất cả những gì phải làm là đặt & sau các công việc và một cuộc gọi chờ, tham số đưa ra số lượng các quy trình song song:
> for i in *; do
> do_something $i &
> pwait 10
> done
Nhưng điều này không hoạt động rất tốt, ví dụ tôi đã thử nó với vòng lặp for để chuyển đổi nhiều tệp nhưng lại gây ra lỗi và hoàn thành công việc.
Tôi không thể tin rằng điều này vẫn chưa được thực hiện vì cuộc thảo luận về danh sách gửi thư zsh đã quá cũ. Vậy bạn có biết gì hơn không?
echo "DONE"
sau vòng lặp được thực thi trước khi các công việc đang hoạt động chưa kết thúc. => Điều này khiến tôi nghĩ rằng công việc chưa được thực hiện.