1

我有一个 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;

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

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

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

4

1 回答 1

3

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

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

  1. 语法错误已修复(添加;echo $lines
  2. 更改$eof为(尽管如果有效$endline,您可能不需要$eof
  3. 确保这log.txt是一个有效的路径(这很可能是你的错误)

否则,它按预期运行。

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

于 2012-08-05T20:59:54.117 回答