bash:写入未命名(匿名)管道的文件描述符#3

bash:写入未命名(匿名)管道的文件描述符#3

我需要从我的 Linux 主机系统调用位于 docker 容器中的 PHP 解释器。由于某些原因,我不想在主机系统上安装 PHP。现在我尝试以这种方式调用 PHP:

cat script.php | docker exec -i php_container_name php -- --param1=value1

我还需要将一些二进制数据传递到该 PHP 脚本的标准输入。但这个通道很忙(因为PHP源代码是通过标准输入传递的)。我尝试过做以下事情:

  1. 使用这样的命名管道:
cat script.php | docker exec -i php_container_name php -- --param1=value1 pipe-name="/path/to/the/file"

并在 PHP 端读取该管道的内容。但通过这样做,我必须在容器和系统之间共享管道文件,这是我宁愿避免的额外操作。

  1. 使用无名管道#3,如下所示:
exec 3> >(docker exec -i php_container_name php -- --param1=value1)
cat ./script.php >&3

因此,在最后一行中,我需要将数据传递到未命名管道的文件描述符#3。像这样的东西:

cat ./script.php >&3 3<`echo -e "line1\nline2"`

但这是行不通的。可以做吗?

相关内容