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

#bash #function #background #subshell

#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 ) amp;
done
wait
cat $OUTFILE
  

Что вы думаете?

Комментарии:

1. @eggyal к сожалению, я дома, а сервер Linux в офисе: P

Ответ №1:

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

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

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