我正在使用以下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}");
答案 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");