使用nodejs执行shell命令

时间:2015-02-13 06:15:18

标签: node.js

我收到了这段代码

function run_cmd(cmd, args, cb ) {
  console.log('[run_cmd] cmd = ' + cmd);
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = '';
  child.stderr.on('data', function(data) { console.log('err = ' + data) });
  child.stdout.on('data', function (buffer) { resp += buffer.toString() });
  child.stdout.on('close', function(code) {
    console.log('[run_cmd] exit code = ' + code + ', resp = ' + resp);
    cb (resp);
  });
}

当我执行像ls这样的简单命令时,它可以正常工作。

run_cmd( "ls", ["-l"], function(text) { console.log (text) });

但是当我试图执行此命令时它并没有执行

 libreoffice --headless --convert-to pdf /home/username/input_file.rtf --outdir ~/tmp

由此

run_cmd( "libreoffice", ["--headless", "--convert-to pdf", file_path, "--outdir ~/tmp"], function(text) { console.log (text) });

我的退出代码= false,空白作为回复。我该怎么调试呢?

不执行命令(未创建输出文件)。

当我手动粘贴终端时,该命令工作正常。

1 个答案:

答案 0 :(得分:0)

此问题是由路径中的波浪号引起的(请参阅here)。您是否可以尝试手动扩展波形符并重新运行该功能?