Может ли функция вызываться в подоболочке bash в качестве фонового задания? - PullRequest
10 голосов
/ 08 мая 2011

Допустим, у меня есть функция 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 Ответ

9 голосов
/ 08 мая 2011

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

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

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

...