Я хотел бы, чтобы Node анализировал выходные данные текущей команды bash и делал с ними что-то параллельно с выполнением выполненной команды.

Например,

const { exec } = require('child_process');

const child = exec('bash server.sh',
  (error, stdout, stderr) => {
    console.log(`stdout: ${stdout}`);
    console.log(`stderr: ${stderr}`);
    if (error !== null) {
      console.log(`exec error: ${error}`);
    }
  });

Где server.sh

yell () {
  echo "bing";
  sleep 1s;
  yell;
}

yell;

К сожалению, процесс зависает, поскольку выполнение ожидает завершения server.sh, но этого не происходит. Есть ли способ обработать вывод server.sh так, как он появляется?

0
Coley G 28 Окт 2019 в 17:16
Мне кажется, вам нужно что-то сделать с child, чтобы это выполнялось в первую очередь.
 – 
Samuel_NET
28 Окт 2019 в 17:24
Правильно, похоже, я могу добавить прослушиватель событий следующим образом: ``` child.stdout.on('data', (data) => { console.log(data.toString()); }); ```
 – 
Coley G
28 Окт 2019 в 17:29

1 ответ

Лучший ответ

Слушатель событий может быть привязан так:

child.stdout.on('data', (data) => {
  console.log(data.toString());
});
1
Coley G 28 Окт 2019 в 17:30