执行 shell 脚本,在发生时打印输出,并在完成之前阻止?



我有一个用JS编写的脚本,它在Node(不是网站,不是电子应用程序;只是终端中的node myscript.js(中执行。该脚本的一部分是按顺序执行一系列其他(shell(脚本,并在执行时打印这些脚本的输出。

我尝试了两种方法:

const execSync = require('child_process').execSync;
for (const argItemin list) {
console.log(execSync('myscript.bat ' + argItem, {encoding: 'utf-8'}));
}
const exec = require('child_process').exec;
for (const argItem in list) {
const execution = exec('myscript.bat ' + argItem);
execution.stdout.on('data', function (data) { console.log(data); });
}

第一种方法同步执行和打印所有内容,但输出是在每次myscript.bat执行完成后写入的,而不是在myscript.bat打印出来时写入的。

第二种方法在事情发生时打印,但因为在每次执行完成之前没有任何阻塞,所以输出是混乱的。

如何阻止第二种方法的子进程,直到脚本执行完毕才能两全其美?谢谢

原来我想要

const execSync = require('child_process').execSync;
for (const argItemin list) {
console.log(execSync('myscript.bat ' + argItem, {stdio: 'inherit'}));
}

最新更新