Я хочу обробити багато файлів, і оскільки у мене тут є маса ядер, я хочу це робити паралельно:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Я знаю рішення Makefile, але мої команди потребують аргументів із списку глобальних оболонок. Я знайшов:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
Щоб скористатися ним, все, що потрібно зробити - це поставити & після виконання завдань і дзвінка з підписом, параметр дає кількість паралельних процесів:
> for i in *; do
> do_something $i &
> pwait 10
> done
Але це працює не дуже добре, наприклад, я спробував це, наприклад, для циклу, який перетворює багато файлів, але дає мені помилку і не залишає завдання скасованим.
Я не можу повірити, що це ще не зроблено, оскільки дискусія в списку розсилки zsh на сьогодні вже така стара. Так ти знаєш краще?
echo "DONE"
після циклу, який був виконаний до того, як активні завдання не будуть закінчені. => Це змусило мене думати, що роботи не були виконані.