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