PHP exec命令不能与包含变量的终端命令一起使用

时间:2014-05-18 23:29:40

标签: php linux variables exec

我正在使用以下php代码。

$i = "1TEN";
$val=exec('cat '$i'.dssp -n | grep " ACC " | grep "[0-9]\+" -o | head -n 1');
echo $val;

它不会给出任何错误或任何输出。但是,以下代码运行良好:

$val=exec('cat 1TEN.dssp -n | grep " ACC " | grep "[0-9]\+" -o | head -n 1');
echo $val;

有人可以帮忙吗?

同样,

$line=exec("tail $i.dssp -n $diff | awk -F" " -v var=$pos '{if ($2==var) print FNR}");

2 个答案:

答案 0 :(得分:1)

您收到此错误是因为您以错误的方式在字符串中插入变量 - 您应该使用双引号"来指定字符串并使用{{1}在文本中转义"所以它不会被解释为字符串的结尾:

\

使用双引号$val = exec("cat {$i}.dssp -n | grep \" ACC \" | grep \"[0-9]\+\" -o | head -n 1"); 来指定字符串,并使用单引号"替换文本中的"

'

如果你想使用单引号$val = exec("cat {$i}.dssp -n | grep ' ACC ' | grep '[0-9]\+' -o | head -n 1"); ,你可以连接你的字符串,如下所示:

'

答案 1 :(得分:0)

在外部使用双引号以允许变量插值,并在内部使用单引号。

$val=exec("cat $i.dssp -n | grep ' ACC ' | grep '[0-9]\+' -o | head -n 1");