用协程进行双向通信

让程序常驻,并通过管道与其交换数据。

macOSBash 脚本自动化Shell脚本低风险
用 coproc NAME { cmd; } 获取该进程的读写文件描述符。

01命令

命令
$ coproc BC { bc; }; echo "2+2" >&"${BC[1]}"; read -r answer <&"${BC[0]}"; echo "$answer"

02作用说明

协程在后台运行命令并建立一对管道,脚本可向 bc 或数据库 CLI 等有状态程序发送输入并读取输出,无需反复重启。这种交互式自动化只有 shell 能做到。

03风险

风险低风险
使用条件macOS default zsh/bash (bash 3.2+; some features need bash 4+ via Homebrew)
系统兼容性macOS with bash 3.2+ (GNU bash 4+ via Homebrew for advanced features)
!注意: 文件描述符号存于 COPID 数组,可能被其他重定向覆盖;请立即保存。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

最后验证: 2026-10-13 · 分类: 开发者