📅  最后修改于: 2023-12-03 14:43:56.392000             🧑  作者: Mango
coproc 是 Bash shell 中的一个内置命令,用于创建一个异步进程并建立到该进程的通信管道。
coproc [name] command [redirections]
其中,name 是可选的,用于标识管道文件描述符数组的名称。command 是要执行的命令,redirections 是可选的重定向列表。
coproc 命令创建一个子进程并建立与该进程的通信。该进程的输出被写入管道,而该进程的输入读取自管道。
通过 coproc 命令创建的管道是 Bash shell 中的一个数组,可以使用该数组的索引访问管道的读写端。
以下示例演示了如何使用 coproc 命令将文件传输到远程服务器:
#!/bin/bash
# 使用 coproc 命令创建一个管道
coproc SSH { ssh user@remote-server "cat > remote-file"; }
# 将文件内容写入管道
cat local-file >&${SSH[1]}
# 关闭管道的写入端
exec {SSH[1]}>&-
# 等待管道的读取端关闭
wait ${SSH_PID}
在上述示例中,使用 coproc 命令创建了一个名为 SSH 的管道数组,并将 ssh 命令的输出重定向到该数组的写入端。然后,将本地文件 local-file 的内容写入管道,该内容将通过 SSH 管道发送到远程服务器的 remote-file 文件中。
在最后,使用 exec 命令关闭管道的写入端,以等待管道的读取端关闭。