2

shell_execが特定のコマンドを実行することは可能ですか?最初のコマンドは動的入力を要求し、その後に入力自体に基づくコマンドが続きます。

私は答えを何時間も調べてきましたが、探しているものが見つからないようです。

以下の例のアイデアと同様の要件があります。

$x = shell_exec("read -p 'Enter your name : ' x; echo 'Your name is' : $x");

x出力のエコー:

あなたのお名前は

ご覧のとおり、複数のコマンドを実行していますが、入力用の文字列コマンド内のどこに挿入できるかわかりません。

注:やってみました

$x = shell_exec("echo 'Foo' | read -p 'Enter your name : ' x; echo 'Your name is :' $x");

echo $x;

出力は:

あなたのお名前は :

私は次のように期待していました

あなたの名前は:Foo

明らかに、何かが間違っています。

4

1 に答える 1

1

私はあなたと同じ問題に遭遇しましたread。端末で同じ行を実行すると、結果は同じになるため、これは php の問題ではなく、シェルの問題です。

$ echo 'Foo' | read -p 'Enter your name : ' x; echo "Your name is : $x"
Your name is : 

readを aでラップするwhile .. do .. doneと、すべてが完全に機能します。

$ echo 'Foo' | while read -p 'Enter your name : ' x; do echo "Your name is : $x" ; done
Your name is : Foo

なぜこれが起こるのかわかりません。

また、 などを使用してみるとproc_open、入力/出力ストリームをより細かく制御できますが、問題が解決するかどうかはわかりませんread

于 2012-07-31T10:32:04.700 に答える