Tricky!Проблема в том, что этот блок
find /home/some/path -type f | while read filename ; do
...
done
Создает подоболочку.В этой подоболочке создаются рабочие места func $ somevariable.Родительская оболочка видит, что все фоновые задания , созданные им , завершены, она не отслеживает фоновые задания, созданные порожденными им субоболочками.
Самое простое решение - создать фоновые заданиявместо родительской оболочки.Вы можете избежать создания подоболочки, не используя канал:
while read filename ; do
...
done < <(find /home/some/path -type f)
Ну, это создает a subshell --- для поиска - но блок while больше не находится вподшкура.
Обратите внимание, что вышесказанное работает только под bash.(Не знаю насчет ksh или zsh, возможно, он там тоже работает. Но он не будет работать под пеплом и другими производными sh.)