Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php bash脚本中的转义字符_Php_Linux_Bash_Shell_Unix - Fatal编程技术网

Php bash脚本中的转义字符

Php bash脚本中的转义字符,php,linux,bash,shell,unix,Php,Linux,Bash,Shell,Unix,我可以使用以下命令终止分离的屏幕会话: sudo kill $(screen -ls | awk '/ScreenName/ { print $1 }' | cut -f 1 -d '.') 我正试图在一个简单的PHP页面上实现这一点: <?php if ($_GET['run']) { $cmd =shell_exec("screen -ls | awk '/ScreenName/ { print $1 }' | cut -f 1 -d '.'"); s

我可以使用以下命令终止分离的屏幕会话:

sudo kill $(screen -ls | awk '/ScreenName/ { print $1 }' | cut -f 1 -d '.')
我正试图在一个简单的PHP页面上实现这一点:

<?php
if ($_GET['run']) {
        $cmd =shell_exec("screen -ls | awk '/ScreenName/ { print $1 }' | cut -f 1 -d '.'");
        system('sudo kill $cmd');
?>
<a href="?run=true">Kill The Screen</a>
是转义字符吗?有什么问题吗?是运行屏幕的apache用户吗?

使用两个反斜杠

在PHP中,将
\\
更改为
\

<?php
if ($_GET['run']) {
        $cmd =shell_exec("screen -ls | awk '/ScreenName/ { print \\$1 }' | cut -f 1 -d '.'");
        system('sudo kill $cmd');
?>
<a href="?run=true">Kill The Screen</a>


你能说出$cmd是什么吗?可能会帮助您确定$cmd的实际评估结果。还有,你的PHP脚本是在哪个用户下运行的?它似乎对我有用?。。。
\
很可能不是问题所在,因为如果没有它,它将尝试查找
$1
这可能会有所帮助:我似乎PHP是作为
www-data
运行的。这可能是问题所在吗?我认为您最初使用
awk'{print\$1}'
的命令与转义的
$
不兼容。因为它是单引号,所以它将作为文本
\$1
传递给awk,而awk将阻塞。
<?php
if ($_GET['run']) {
        $cmd =shell_exec("screen -ls | awk '/ScreenName/ { print \\$1 }' | cut -f 1 -d '.'");
        system('sudo kill $cmd');
?>
<a href="?run=true">Kill The Screen</a>