一尘不染

在Node.js中执行bash命令并获取退出代码

node.js

我可以在node.js中运行bash命令,如下所示:

var sys = require('sys')
var exec = require('child_process').exec;

function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", function(err, stdout, stderr) {
  console.log(stdout);
});

如何获得该命令的退出代码(ls -la在此示例中)?我试过跑步

exec("ls -la", function(err, stdout, stderr) {
  exec("echo $?", function(err, stdout, stderr) {
    console.log(stdout);
  });
});

尽管如此,无论上一个命令的退出代码如何,它总是返回0。我想念什么?


阅读 300

收藏
2020-07-07

共1个答案

一尘不染

这两个命令在单独的shell中运行。

要获取代码,您应该能够签err.code入回调。

如果这不起作用,则需要添加一个exit事件处理程序

例如

dir = exec("ls -la", function(err, stdout, stderr) {
  if (err) {
    // should have err.code here?  
  }
  console.log(stdout);
});

dir.on('exit', function (code) {
  // exit code is code
});
2020-07-07