coproc
Bash builtin for creating interactive asynchronous subshells. More information: https://www.gnu.org/software/bash/manual/bash.html#Coprocesses.
- Run a subshell asynchronously:
coproc {
command1; command2; …; }
- Create a coprocess with a specific name:
coproc
name {
command1; command2; …; }
- Write to a specific coprocess
stdin
:
echo "
input" >&"$
{name[1]}"
- Read from a specific coprocess
stdout
:
read
variable <&"$
{name[0]}"
- Create a coprocess which repeatedly reads
stdin
and runs some commands on the input:
coproc
name { while read line; do
command1; command2; …; done }
- Create and use a coprocess running
bc
:
coproc BC { bc --mathlib; }; echo "1/3" >&"${BC[1]}"; read output <&"${BC[0]}"; echo "$output"