Bash builtin for creating interactive asynchronous subshells. More information: https://www.gnu.org/software/bash/manual/bash.html#Coprocesses.
coproc { command1; command2; ...; }
coproc name { command1; command2; ...; }
stdin
:echo "input" >&"${name[1]}"
stdout
:read variable <&"${name[0]}"
stdin
and runs some commands on the input:coproc name { while read line; do command1; command2; ...; done }
bc
:coproc BC { bc --mathlib; }; echo "1/3" >&"${BC[1]}"; read output <&"${BC[0]}"; echo "$output"