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>