Em vez de nomear os resultados, basta nomear o comando.
param_set_1(){
input_command \
-lots \
-of \
-params
}
param_set_2(){
input_command \
-lots \
-of \
-other \
-params
}
command_outer -params <(param_set_1) <(param_set_2)
Você também pode se referir a descritores de arquivos pelo nome.
param_set_1 | { param_set_2 | command_outer -params /dev/fd/3 -; } 3<&0
Se você realmente deseja os resultados em uma variável do shell atual e em um descritor de arquivo, deve evitar os canais. Você corre o risco de preencher o buffer de pipe com a saída do seu comando enquanto tenta atribuir esses resultados a uma variável pai-shell antes que o buffer de tubos possa ser drenado pelo processo de leitura e ... bem, não é bonito. Então, você deve levar tudo de uma só vez e usar aqui-documentos.
unset fd3 fd4
{ command_outer -params /dev/fd/[34]
} 3<<FD3 4<<FD4
${fd3=$(param_set_1)}
FD3
${fd4=$(param_set_2)}
FD4