【问题标题】:perl system echo output redirectionperl 系统回显输出重定向
【发布时间】:2016-12-29 14:42:04
【问题描述】:

以下代码

system( echo hi there >>log.txt );

正确重定向,但也将输出打印到 STDOUT.. 所以当我运行我的 perl 脚本时,我看到了

 perl script.pl
 hi there

并且 log.txt 文件已正确更新。

问题:我怎样才能让它只更新文件而不更新 STDOUT。

注意: 请不要建议使用文件句柄,我有理由让我不想这样做。

【问题讨论】:

  • 您的代码不是有效的 Perl(它缺少一些引号),所以它不会运行。此外,您的脚本可能正在执行其他操作,因为 perl -E 'system("echo hi there >>log.txt");' 按预期工作。如果您希望我们提供帮助,请使用您的真实代码。

标签: perl echo system io-redirection


【解决方案1】:

您可以使用反引号调用该命令:

`echo hi there >>log.txt`;

然后结果将不会打印到 STDOUT,而是返回,因此您可以将其存储在变量中。但你不需要,你也可以忽略它。

【讨论】:

  • 实际上这是我的第一个方法,但由于某种原因,当我使用反引号调用它时,我调用的 .exe 有时会挂起,但当我使用 system() 时不会挂起。无论如何要做它与系统()?我还不如只对回声使用反引号..这可能是一个很好的解决方案..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多