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