PHP是否使用带exec()的$$,以及如何为下一个脚本保留它?

hex*_*ide 4 php bash

我使用PHP 在其命令行exec()中的Bash中启动进程$$.但是当使用PHP时,PHP本身似乎采用变量$$而不是让Bash在脚本中使用它.

PHP使用这个变量吗?假设如此,我如何为Bash脚本保留它?

示例:在Bash中exec('echo $$')执行echo 1538,而不是echo $$,因为PHP似乎已采用变量$$.

Mar*_*c B 8

Php不会"接受"该$$值,因为它位于单引号字符串中.

它将bash转换为处理echo命令的bash进程的PID.

如果你想$通过echo命令逐字输出两个,你将不得不逃避它们:

exec('echo \\$\\$');
Run Code Online (Sandbox Code Playgroud)

跟进:

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

php > echo exec('echo $$');
31339
php > echo exec('echo \\$\\$');
$$
Run Code Online (Sandbox Code Playgroud)

后续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
Run Code Online (Sandbox Code Playgroud)