用协程进行双向通信
让程序常驻,并通过管道与其交换数据。
用 coproc NAME { cmd; } 获取该进程的读写文件描述符。
01命令
命令
$ coproc BC { bc; }; echo "2+2" >&"${BC[1]}"; read -r answer <&"${BC[0]}"; echo "$answer"02作用说明
协程在后台运行命令并建立一对管道,脚本可向 bc 或数据库 CLI 等有状态程序发送输入并读取输出,无需反复重启。这种交互式自动化只有 shell 能做到。
03风险
!注意: 文件描述符号存于 COPID 数组,可能被其他重定向覆盖;请立即保存。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- bash.1.en.html manual page依据: The bash manual page documents coprocesses.
最后验证: 2026-10-13 · 分类: 开发者