Можно ли вызвать функцию в bash подоболочке в качестве фонового задания?

Скажем, у меня есть функция bash

Yadda() {
  # time-consuming processes that must take place sequentially
  # the result will be appended >> $OUTFILE
  # $OUTFILE is set by the main body of the script
  # No manipulation of variables in the main body
  # Only local-ly defined variables are manipulated
}

Мне разрешено вызывать функцию в качестве фонового задания в подоболочке? Например:.

OUTFILE=~/result
for PARM in $PARAMLIST; do
  ( Yadda $PARM ) &
done
wait
cat $OUTFILE

Как вы думаете?

Ответ 1

Вы можете вызвать функцию в качестве фонового задания в подоболочке. Он будет работать так же, как вы набрали ваш пример.

Я вижу одну проблему в том, как вы продемонстрировали ее в своем примере. Если некоторые из процессов завершатся одновременно, они будут пытаться писать в OUTFILE одновременно, и выход может быть запутан.

Я предлагаю, чтобы каждый процесс записывал в него собственный файл, а затем собирал файлы после завершения всех процессов.