Bash 的 coproc 命令可以在后台启动一个协进程,并通过 COPROC 数组变量与其进行双向通信,非常适合构建交互式脚本或需要与子进程持续交互的场景。下面从一个最简单的 “Hello World” 开始,逐步拆解协进程的使用方法。
首先创建一个运行着 Bash 的协进程:
coproc bash
这会在后台启动一个新的 Bash 实例,并将其标准输入、输出分别映射到文件描述符 ${COPROC[1]}(写端)和 ${COPROC[0]}(读端)。接下来可以向协进程发送命令:
echo 'echo Hello World' >&"${COPROC[1]}"
这条命令告诉协进程执行一个 echo Hello World 的输出。发送后,协进程会立即处理该命令并把结果写回自己的标准输出。我们从协进程的输出中读取一行:
read line <&"${COPROC[0]}"
最后打印读取到的行:
echo "$line"
输出结果会是字符串 “Hello World”。整个过程就像在和另一个 shell 对话一样,非常适合需要后台运行并反复交互的任务。如果你想深入学习 Bash 在自动化运维和 DevOps 中的更多高级玩法,可以到 云栈社区的运维技术板块 看看,里面涵盖了大量脚本编程和流程编排的实战笔记。
|