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"`

しかし、これはうまくいきません。できますか?

ベストアンサー1

おすすめ記事