我使用 PHPexec()
在 Bash 中启动$$
其命令行中的进程。但是,在使用 PHP 时,PHP 本身似乎采用了该变量$$
,而不是让 Bash 在脚本中使用它。
PHP 是否使用此变量?假设是这样,我如何为 Bash 脚本保留它?
示例:在 Bash 中exec('echo $$')
执行,而不是,因为 PHP 似乎采用了变量 $$。echo 1538
echo $$
Php 不会“获取”该$$
值,因为它位于单引号字符串中。
它是 bash 将其转换为处理 echo 命令的 bash 进程的 PID。
如果您想$
通过 echo 命令从字面上输出两个,则必须转义它们:
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
正如@marc 所说, exec 实际上是在返回进程的 PID。
然而,这仍然是在 PHP 中使用的“狡猾”的语法,因为你必须小心放置它,''
否则 PHP 会用它做一些特别的事情。基本上,PHP 能够以两种方式使用变量:
$a
和:
$$a
后者使用 $a 的值实际到达一个新的变量名,所以你必须小心你如何使用该语法(http://www.php.net/manual/en/language.variables.variable.php )。