Может ли функция вызываться в подоболочке 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, и выходные данные могут быть перепутаны.

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

Другие вопросы по тегам