【发布时间】:2015-05-29 19:06:03
【问题描述】:
我正在尝试使用通常的反引号从 perl 脚本中运行 tail 命令。
我的 perl 脚本中的部分如下:
$nexusTime += nexusUploadTime(`tail $log -n 5`);
所以我试图获取此文件的最后 5 行,但当 perl 脚本完成时出现以下错误:
sh: line 1: -n: command not found
即使当我在命令行上运行该命令时,它确实是成功的,并且我可以看到该特定的 5 行。
不确定这里发生了什么。为什么它可以从命令行工作,但通过 perl 它无法识别 -n 选项。
有人有什么建议吗?
【问题讨论】:
-
将
-n 5放在文件名参数之前。选项应该在文件名之前——在所有经典的 Unix 系统中。 GNU 工具集模糊了该规则,但如果有疑问,文件名之前的选项通常会起作用。 -
是的,我刚刚意识到这就是问题所在。我发现一篇文章说把选项放在文件名后面。
-
记得从这里开始忽略那篇文章。
-
@Jonathan Leffler,将
$log放在最后确实可以解决问题,但不是因为您认为的原因。看我的回答。 -
@ikegami:啊; “找不到命令”与“找不到文件”。
标签: perl unix command backticks