2016-11-15 4 views
7

backticks를 사용하여 Perl에서 Linux 명령을 실행하려고합니다. 나는 리눅스에서 직접 실행할 때 작동하지만 펄 역 따옴표를 통해 수행 할 때이 오류가 얻을 :터미널에서 작동하더라도 왜 백틱에서 구문 오류가 발생합니까?

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`; 

어떤 통찰력을 무엇 이 오류가 크게 감사하게 될 수도 있습니다.

감사

+11

아마도 명령 행에서'bash'를 사용하여 코드를 테스트했지만 Perl에서 호출 할 때'sh'를 통해 실행하려고합니다. –

+2

당신은 절대적인 천재입니다 – user3307598

+2

파일 리다이렉션을 권 해드립니다. 일반적으로 파이핑을위한 실행 파일을 열어 놓은 다음 쉘로 아웃소싱하는 것이 아니라 파일을 직접 처리하는 것이 좋습니다. – Sobrique

답변

10

당신은 아마 bash와 명령 줄에서 코드를 테스트하지만 당신은 당신이 펄에서 그것을 호출 할 때 sh를 통해 그것을 실행하려고하고 있습니다.

Bourne 쉘과 호환되도록 명령을 변경하거나 bash을 명시 적으로 호출하십시오.

+1

감사합니다 :) 당신은 구세주입니다. – user3307598