当前位置: 首页 > 面试题库 >

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

平学
2023-03-14
问题内容

我可以在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。我想念什么?


问题答案:

这两个命令在单独的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
});


 类似资料:
  • 问题内容: 在node.js中,我想找到一种方法来获取Unix终端命令的输出。有什么办法吗? 问题答案: 那就是我现在正在工作的项目中这样做的方式。 示例:检索git用户

  • 问题内容: 我有一个程序是: 注意:nv0914是bash可执行文件,nv0914.challenge是文本文件。当我在终端中运行任何常规命令时,如果之后使用,请检查退出代码。现在,我想使用一个程序来做同样的事情,但是该程序只是提供输出。请帮帮我! 问题答案: Process.waitFor()返回一个返回退出代码的位置。如果您启动一个不相关的程序,则不会有先前的退出代码,这就是为什么它不返回任何

  • 问题内容: 我正在使用Groovy在我的Linux机器上执行命令并返回输出,但是我无法以某种方式使用管道(我认为),或者它可能没有在等待命令完成。 有什么问题或我的代码中缺少什么? 我的调用函数: 文件内容(更新:添加了exitVal println): 我的输出(更新:添加了exitVal值): 注意:我在内部使用。 问题答案: 您不能使用进行管道或重定向。这在Java中不起作用,因此在Groo

  • 在一个节点中。js,我想找到一种获取Unix终端命令输出的方法。有没有办法做到这一点?

  • 问题内容: 我需要从命令行程序中获取退出状态代码。不用担心,我用$?。但是对于ftp,即使它没有连接,它也会打开ftp shell,所以我无法理解连接没有建立。 尝试以下代码以了解: 有什么帮助吗?谢谢菲利波 问题答案: 您应该从ftp命令中查找成功消息,而不是查找状态。这是“ 226传输完成”。您可以在系统上使用ftp手册进行确认。 这是一个示例脚本。

  • 问题 你想执行一个外部命令并以Python字符串的形式获取执行结果。 解决方案 使用 subprocess.check_output() 函数。例如: import subprocess out_bytes = subprocess.check_output(['netstat','-a']) 这段代码执行一个指定的命令并将执行结果以一个字节字符串的形式返回。 如果你需要文本形式返回,加一个解码步