Я бы хотел, чтобы 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

1 ответ

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

child.stdout.on('data', (data) => {
  console.log(data.toString());
});
58592562