Duplicate &1
in your shell (in my example to 5) and use &5
in the subshell (so that you will write to stdout (&1
) of the parent shell):
exec 5>&1
FF=$(echo aaa|tee >(cat - >&5))
echo $FF
This will print “aaa” two times, once because of the echo in the subshell, and the second time it prints the value of the variable.
In your code:
exec 5>&1
VAR1=$(for i in {1..5}; do sleep 1; echo $i; done | tee >(cat - >&5))
# use the value of VAR1