ksh имеет действительно интересную конструкцию, подробно описанную в этом ответе: qaru.site/info/4703/...
Так как Bash 4.0, встроенная команда mapfile встроенная команда должна решить эту проблему: http://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
Но, как ни странно, он не работает с заменой процесса:
foo () { echo ${BASH_SUBSHELL}; }
mapfile -t foo_output <(foo) # FAIL: hang forever here
subshell_depth=${foo_output[0]} # should be 0
Но как это сделать в Bash v3.2?