我有一个用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'}));
}