Запуск дочернего процесса с возвратом регулярного выражения не распознана ошибка на windows - PullRequest
1 голос
/ 12 апреля 2020

Я использую следующий код для получения Make целевых файлов

const command = `make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\\/t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}'`;

cp.exec(command, options, (error, stdout, stderr) => {
  if (error) {
    reject({ error, stdout, stderr });
  }
});

При использовании его через код я получаю сообщение об ошибке (Windows):

"'$)' is not recognized as an internal or external command,
operable program or batch file.
"

Однако, если я запускаю точную команду на терминале , она работает ! В чем может быть проблема?

Кстати, на MacOS код работает, есть ли обходной путь? В чем может отсутствовать регулярное выражение?

Я пробовал также с shell js и получил точно такую ​​же ошибку, может быть, я пропустил какой-нибудь escape-символ?

Я использую NodeJS child_process.

Как я могу заставить это работать?

Если есть другой способ получить цель makefile I можно попробовать?

1 Ответ

1 голос
/ 16 апреля 2020

Это проблема, связанная с выходом Windows pipe |. Вы должны использовать двойные кавычки вместо одинарных.

Использование двойных кавычек вместо одинарных:

const command = `make -qp | awk -F":" "/^[a-zA-Z0-9][^$#\\/t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}"`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...