2015-06-24 42 views
1

我正在使用child_process.exec来执行带有coffeescript中的node.js的Ubuntu命令。当我执行以下命令:使用node.js和coffeescript执行Ubuntu命令

list = child_process.exec("ls") 
print list 

它打印这样的:

[Object Object] 

为什么不打印ls命令的适当的输出?我应该怎么做才能获得适当的命令输出?

回答

2

您试图同步运行异步功能。要做到这一点,正确的方法是:

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

exec('ls', function (error, stdout, stderr) { 
    console.log(stdout); 
}); 

来源:https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

如果你真的希望同步执行一个命令,就可以使用execSync。不过,我建议不要这样做,因为它会阻止你的节点代码做任何事情,直到过程结束。

ExecSync:https://nodejs.org/api/child_process.html#child_process_child_process_execsync_command_options

+0

这是行不通的。也许咖啡是干扰它的。这是回溯的一部分:[Wed Jun 24 2015 17:13:40 GMT + 0530(IST)]错误无法加载/ home/cube26/Desktop/hubot 2.0/scripts/abuse:SyntaxError:unexpected { Object.exports.throwSyntaxError(/ home/cube26/Desktop/hubot 2.0/node_modules/hubot/node_modules/coffee-script/lib/coffee-script/helpers.js:197:13) at Object.parser.yy.parseError (/ home/cube26/Desktop/hubot 2.0/node_modules/hubot/node_modules/coffee-script/lib/coffee-script/coffee-script.js:265:20) ' –

0

找到了! 可以使用访问 - >

print list.main.<attribute_name>