В данном случае из-за канала while запускается в отдельном процессе.
Можно записать в значение в файл и прочмнать его после цикла:
find ... | while read V ; do
echo "fuck" > /tmp/file.$$
done
VARIABLE=`cat /tmp/file.$$`
rm /tmp/file.$$
echo $VARIABLE
Либо таким образом:
VARIABLE=$(find ... | while read V ; do
echo foo
done | tail -1)
echo $VARIABLE
======================================
(на zsh вариант автора темы работает).