Я пытаюсь запустить команду Linux в Perl, используя обратные ссылки. Она работает, когда я запускаю его непосредственно в Linux, но когда Perl делает это через обратные кавычки, я получаю эту ошибку:Почему я получаю синтаксическую ошибку в backticks, хотя она работает в терминале?
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', но вы пытаетесь запустить его через' sh', когда вы вызываете его из Perl. –
Вы абсолютный гений – user3307598
Я бы предложил с файловыми переадресациями, вам было бы лучше «открыть» исполняемый файл для конвейера, а затем обработать файл io самостоятельно, а не аутсорсинг для оболочки. – Sobrique