Если вам действительно нужно это сделать, то хаком будет заставить ваши функции распечатать bash-код, который затем можно будет как-то захватить и оценить.
Я уверен, что самым простым способом было бы просто заставить ваши функции выводить код во временный файл, а затем исходить из этого файла в конце. Таким образом, вы бы изменили функции так:
func1(){
echo "var1=one"
}
тогда в конце сделайте что-то вроде:
TEMPFILE=`mktemp`
func1 >> $TEMPFILE &
func2 >> $TEMPFILE &
func3 >> $TEMPFILE &
wait
source $TEMPFILE
rm $TEMPFILE
echo "$var1 $var2 $var3"
Если сами функции выводят на печать, вам, возможно, придется сделать что-то вроде экспорта переменной, содержащей имя временного файла, а затем перенаправить в функцию, а именно:
export TEMPFILE=`mktemp`
func1(){
echo "var1=one" >> $TEMPFILE
}
не забудьте удалить временные файлы ...
ПРИМЕЧАНИЕ: вероятно, есть гораздо лучший способ.