Передача сценария оболочки через bash с использованием node.js - PullRequest
0 голосов
/ 14 мая 2019

Скажите, у меня есть это:

const cp = require('child_process');

fs.createReadStream(__dirname + '/dummy.sh')
  .pipe(cp.spawn('bash').stdin).on('data', d => {
  console.log('data:', d);
});

и dummy.sh содержат только echo "this is dummy", по какой-либо причине в обратном вызове данных не поступает никаких данных. Кто-нибудь знает, почему это может быть? Я бы ожидал этот вывод data: this is dummy

1 Ответ

0 голосов
/ 14 мая 2019

Вы не слушаете вывод команды bash .
Обработчик события on('data') не запускает вывод сценария bash .

Вместо этого вы должны прослушать процесс stdout :

const fs = require('fs');
const cp = require('child_process');

let cmd = cp.spawn('bash');
fs.createReadStream(__dirname + '/dummy.sh')
    .pipe(cmd.stdin).pipe(cmd.stdout).on('data', d => {
  console.log('data:', d.toString());  // data: this is dummy
});
...