linux - 为什么在反引号中出现语法错误,即使它在终端中有效?

标签 linux perl backticks

我正在尝试使用反引号在 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 运行它。

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

关于linux - 为什么在反引号中出现语法错误,即使它在终端中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612753/

相关文章:

linux - logrotate 不根据大小旋转日志

linux - Bash - 反引号调用永远阻塞

Ruby 限制反引号表达式中的字符串替换?

linux - 在 shell 脚本中使用查找

linux - 链接时如何指定节的基地址,或者如何在链接后重新设置节的基址?

linux - 使用 "du"命令获取大小和其他信息

perl - 通过 perl 脚本在文件中替换

perl 删除尾随行不起作用

regex - 在音译运算符中使用变量

haskell - 缩进操作符