4

PHP を使用して、コマンドラインexec()にある Bash でプロセスを開始します。$$ただし、PHP を$$使用する場合、Bash にスクリプトで変数を使用させるのではなく、PHP 自体が変数を使用しているように見えます。

PHP はこの変数を使用しますか? そう仮定すると、Bash スクリプト用にどのように保存すればよいですか?

例: PHP は変数 $$ を使用しているように見えるため、ではなく Bash でexec('echo $$')実行します。echo 1538echo $$

4

2 に答える 2

8

$$単一引用符で囲まれた文字列内にあるため、Php は値を「取得」しません。

これは、echo コマンドを処理する bash プロセスの PID に変換する bash です。

echo コマンドを使用して文字通り 2 つ出力したい場合は$、それらをエスケープする必要があります。

exec('echo \\$\\$');

ファローアップ:

marc@panic:~$ bash
marc@panic:~$ echo $$
31285
marc@panic:~$ php -a
Interactive shell

php > echo exec('echo $$');
31339
php > echo exec('echo \\$\\$');
$$

フォローアップ 2:

marc@panic:~$ cat pid
#!/bin/bash
echo $$
marc@panic:~$ ./pid    <--new shell started to execute script
31651
marc@panic:~$ . pid    <---script executed within context of current shell
31550
marc@panic:~$ echo $$
31550
于 2012-08-15T18:49:13.173 に答える
1

@marcが言ったように、execは実際にはプロセスのPIDを返しています。

ただし、これは PHP で使用するには依然として「危険な」構文です。注意して配置する必要があるため''です。基本的に、PHP には次の 2 つの方法で変数を使用する機能があります。

$a

と:

$$a

後者は $a の値を使用して実際に新しい変数名に到達するため、その構文の使用方法に注意する必要があります (http://www.php.net/manual/en/language.variables.variable.php )。

于 2012-08-15T18:54:01.493 に答える