【问题标题】:Why do I get a syntax error in backticks, even though it works in terminal?为什么我在反引号中出现语法错误,即使它在终端中工作?
【发布时间】:2016-11-15 14:47:24
【问题描述】:

我正在尝试使用反引号在 Perl 中运行 Linux 命令。当我直接在 Linux 中运行它时它可以工作,但是当 Perl 通过反引号运行它时,我得到这个错误:

sh: -c: line 0: syntax error near unexpected token `>'
sh: -c: line 0: `(/src/storageUtil --diagnostic 2> >(tee >(cat >&2) >&1)) > log.txt'

有问题的代码行是:

$output = `(/src/storageUtil --diagnostic 2> >(tee >(cat >&2) >&1)) > log.txt`;

非常感谢任何有关可能导致此错误的原因的见解。

谢谢

【问题讨论】:

  • 您可能在命令行中使用bash 测试了您的代码,但是当您从Perl 调用它时,您正试图通过sh 运行它。
  • 你真是个天才
  • 我建议使用文件重定向,您通常最好opening 管道可执行文件,然后自己处理文件 io,而不是外包给 shell。
  • @ysth:好的 - 评论现在转换为下面的答案。

标签: linux perl backticks


【解决方案1】:

您可能在命令行上使用bash 测试了您的代码,但是当您从 Perl 调用它时,您正试图通过sh 运行它。

要么更改您的命令以与 Bourne shell 兼容,要么显式调用 bash

【讨论】:

  • 谢谢 :) 你是救世主
猜你喜欢
  • 2016-06-28
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 2019-11-04
  • 2018-01-20
  • 1970-01-01
相关资源
最近更新 更多