Korn shell 或 POSIX shell 允许运行一个或多个命令作为后台进程。这些在 shell 脚本内运行的命令被称为协进程。
通过在命令后面放置 |& 运算符可以指定一个协进程。命令的标准输入和输出均被管道传到脚本。
协进程必须满足以下约束:
- 每条消息的尾部必须包含一个换行符
- 将所有输出消息发送到标准输出
- 每条消息后清空标准输出
下例显示了输入如何被传给协进程并由协进程返回。
echo "Initial process" ./FileB.sh |& read -p a b c d echo "Read from coprocess: $a $b $c $d" print -p "Passed to the coprocess" read -p a b c d echo "Passed back from coprocess: $a $b $c $d"
FileB.sh echo "The coprocess is running" read a b c d echo $a $b $c $d
结果标准输出如下所示:
Initial process Read from coprocess: The coprocess is running Passed back from coprocess: Passed to the coprocess
使用 print -p 命令写至协进程。使用 read -p 命令从协进程读取。