2016-11-15 17 views
7

Próbuję uruchomić polecenie Linuksa w Perlu za pomocą backticks. To działa, gdy go uruchomić bezpośrednio w Linuksie, ale gdy Perl robi to poprzez backticks, otrzymuję ten błąd:Dlaczego pojawia się błąd składniowy w odbiciach, mimo że działa on w terminalu?

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

linii kodu w pytaniu:

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

Każdy wgląd, co może spowodować, że ten błąd zostanie bardzo doceniony.

Dzięki

+11

Prawdopodobnie przetestowałeś swój kod w wierszu poleceń za pomocą 'bash', ale próbujesz uruchomić go za pomocą' sh', gdy wywołasz go z Perla. –

+2

Jesteś absolutnym geniuszem – user3307598

+2

Proponuję przekierowania plików, ogólnie lepiej będzie "otworzyć" plik wykonywalny dla instalacji rurowej, a następnie obsłużyć plik io siebie, zamiast outsourcować do powłoki. – Sobrique

Odpowiedz

10

Prawdopodobnie przetestowany kod w wierszu polecenia z bash ale starasz się go uruchomić poprzez sh gdy podniesienie go z Perl.

Zmień komendę tak, aby była zgodna z powłoką Bourne lub wywołaj jawnie bash.

+1

Dzięki :) jesteś zbawicielem – user3307598

Powiązane problemy