PHP:Backtick无法使用命令

时间:2012-08-05 20:09:26

标签: php bash

我有一个PHP脚本,它通过使用反引号运算符在Bash中执行命令从文件中检索200行。这是代码的样子:

$endline = `(shell execution that returns a number here)`;
$line = $endline - "200";
$lines = "sed -n '".$line.", ".$endline." p' log.txt";

echo $lines;
$file = `$lines`;
echo $file;

此代码将$lines作为sed -n '1800, 2000 p' log.txt返回,但$file不会返回任何结果。在Bash终端中直接使用sed -n '1800, 2000 p' log.txt时,我会得到预期的结果。

这里做错了什么?是否必须转义'个字符?

编辑: shell脚本在数字后面添加了一个空格,因此误读了它。

1 个答案:

答案 0 :(得分:3)

我的猜测是,$eof或您的路径(log.txt)不合适。

我复制并粘贴了您的代码,它可以使用以下调整:

    修复了
  1. 语法错误(将;添加到echo $lines
  2. $eof更改为$endline(如果$eof有效,则可能不需要
  3. 确保log.txt是有效路径(这很可能是您的错误)
  4. 否则,它按预期运行。

    它在Bash中工作但在PHP中不起作用的原因是它们的“工作目录”不一定相同。