Javascript Shell命令执行
我正在尝试实现我在此处找到的shell命令执行: 所以我试图让第二个答案(由Chris Eineke)起作用。但现在我没有得到任何输出 以下是我的尝试:Javascript Shell命令执行,javascript,livescript,Javascript,Livescript,我正在尝试实现我在此处找到的shell命令执行: 所以我试图让第二个答案(由Chris Eineke)起作用。但现在我没有得到任何输出 以下是我的尝试: run_cmd = (cmd, args, done) -> spawn = require('child_process').spawn child = spawn(cmd, args) result = { stdout: '' }; child.stdout.on \data ! (buffer) -
run_cmd = (cmd, args, done) ->
spawn = require('child_process').spawn
child = spawn(cmd, args)
result = { stdout: '' };
child.stdout.on \data ! (buffer) ->
result.stdout += buffer
child.stdout.on \end !-> done()
result
dir = run_cmd(
'ls', ['-a']
, !-> console.log('done')
)
console.log dir.stdout
它汇编为:
run_cmd = function(cmd, args, done){
var spawn, child, result;
spawn = require('child_process').spawn;
child = spawn(cmd, args);
result = {
stdout: ''
};
child.stdout.on('data', function(buffer){
result.stdout += buffer;
});
child.stdout.on('end', function(){
done();
});
return result;
};
dir = run_cmd('ls', ['-a'], function(){
console.log('done');
});
console.log(dir.stdout);
但是我看不到
ls
结果。我的错在哪里?或者我做错了什么?您没有看到结果,因为run\u cmd运行异步,当运行console.log dir.stdout
时,结果为空。您应该将结果传递给回调并在那里进行日志记录。以下是一个可用的LiveScript版本:
run_cmd = !(cmd, args, done) ->
spawn = require 'child_process' .spawn
child = spawn cmd, args
result = stdout: ''
child.stdout
..on \data !(buffer) ->
result.stdout += buffer
..on \end !->
done result
<-! run_cmd \ls <[ -a ]>
console
..log \done
..log it.stdout
run\u cmd=!(cmd,args,done)->
spawn=需要“子进程”。spawn
child=spawn cmd,args
结果=标准输出:“”
童装
…打开\数据!(缓冲区)->
result.stdout+=缓冲区
…打开\end!->
完成结果
您没有看到结果,因为run_cmd运行async,当运行console.log dir.stdout
时,结果为空。您应该将结果传递给回调并在那里进行日志记录。以下是一个可用的LiveScript版本:
run_cmd = !(cmd, args, done) ->
spawn = require 'child_process' .spawn
child = spawn cmd, args
result = stdout: ''
child.stdout
..on \data !(buffer) ->
result.stdout += buffer
..on \end !->
done result
<-! run_cmd \ls <[ -a ]>
console
..log \done
..log it.stdout
run\u cmd=!(cmd,args,done)->
spawn=需要“子进程”。spawn
child=spawn cmd,args
结果=标准输出:“”
童装
…打开\数据!(缓冲区)->
result.stdout+=缓冲区
…打开\end!->
完成结果