是否可以将系统输出放入 javascript 中的 var 中?

有没有办法将系统 shell 输出的结果放入 var 中,例如:


exec('echo test', (error, stdout, stderr) => {

  if (error) {

    console.error(`exec error: ${error}`);

    return;

  }

  console.log(`stdout: ${stdout}`);

});

并将控制台日志输出保存到 var


30秒到达战场
浏览 159回答 1
1回答

潇湘沐

有几种方法!首先,您应该注意,在上面的示例中,标准输出已经在适当命名的变量中可用:exec('echo test', (error, stdout, stderr) => {  if (error) {    console.error(`exec error: ${error}`);    return;  }  console.log(`stdout: ${stdout}`); // right here});但是,我假设您希望能够在回调之外访问该值。您可以依靠exec返回 a的事实,ChildProcess而后者又公开了一个表示进程标准输出的可读流:const subprocess = exec('echo test')let stdout = "";subprocess.stdout.on('data', (chunk) => {  stdout += chunk.toString();});subprocess.stdout.on('end', () => {  console.log(`stdout: ${stdout}`); // stdout is now complete});但是您还应该注意,尽管从技术上讲,该变量可以在回调之外访问,但实际上直到另一个回调之后才准备好。这是因为exec是异步的,所以它的结果同样需要异步访问。如果这给您的用例带来了问题,一种替代方法是使用同步执行您的子进程execSync,在这种情况下,您的 stdout 只是直接从调用中作为缓冲区返回:const stdout = execSync('echo test').toString();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript