【发布时间】:2017-12-26 05:44:08
【问题描述】:
我想同步执行一个shell命令并检查shell命令的结果是否有任何错误。
因此我使用shellJS 及其执行方法。
不幸的是,成功的处理程序永远不会到达。我的 shell.exec-statement 之后的任何语句都会立即执行。
这是我的代码:
function * exec(cmd, verbose) {
if(verbose) console.log("\nCMD " + cmd);
var ret = 0;
shell.exec(cmd, function(code, stdout, stderr) {
console.log("AAAAA")
ret = code;
if(code !== 0) console.log(stderr)
});
console.log("BBBBB")
if(ret !== 0 && ret !== undefined) {
console.log("ERROR: there is an error occured: ", ret);
process.exit();
}
return ret;
}
我调用这个方法:
yield exec('ls -l', true);
yield exec('ls -l ..', true);
console.log("AAA") 出现在应用程序的末尾,位于所有其他 console.logs 之后.... console.log("BBB") 在 shell.exec-command 触发任何输出之前立即出现。
shell.js 的 README 说明:
除非另有说明,否则同步执行给定的命令。 在同步模式下,这将返回一个 ShellString(兼容 ShellJS v0.6.x,它返回一个 { code:... 形式的对象, 标准输出:...,标准错误:...})。否则,这将返回子进程 对象,回调获取参数(代码、标准输出、标准错误)。
有什么想法吗?我哪里错了,
【问题讨论】: