user3307598 user3307598 - 6 months ago 31
Linux Question

Why do I get a syntax error in backticks, even though it works in terminal?

I am trying to run a Linux command in Perl using backticks. It works when I run it directly in Linux, but when Perl does it through backticks, I get this error:

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

The line of code in question is:

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

Any insight as to what might cause this error would be greatly appreciated.



You probably tested your code on the command line with bash but you're trying to run it via sh when you invoke it from Perl.

Either change your command to be compatible with the Bourne shell, or invoke bash explicitly.