gpt4 book ai didi

javascript - Shell命令执行

转载 作者:行者123 更新时间:2023-11-28 02:14:59 25 4
gpt4 key购买 nike

我正在尝试实现我在这里找到的 shell 命令执行:node.js shell command execution

所以我正在尝试让第二个答案(由 Chris Eineke 提供)起作用。但现在我没有得到任何输出。

这是我的尝试:

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_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

在这里,我们看到使用了多个 LS 功能,例如无括号链接(spawn 行)、无括号对象定义(result 行)、级联(..on..log 行)、回调(<-! 行)。 )、字数组( <[ array of words ]> )和隐式参数( it )。有关它们的更多信息,请参阅 LiveScript文档。

关于javascript - Shell命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com