J.R*_*.R. 8 javascript node.js
我尝试了以下代码,它显示 res 未定义。我怎样才能返回标准输出?
function run_shell_command(command)
{
var res
exec(command, function(err,stdout,stderr){
if(err) {
console.log('shell error:'+stderr);
} else {
console.log('shell successful');
}
res = stdout
// console.log(stdout)
});
return res
}
Run Code Online (Sandbox Code Playgroud)
0.s*_*.sh 10
除非您使用exec函数的同步版本,否则您无法获得返回值。如果你仍然坚持这样做,你应该使用回调
function run_shell_command(command,cb) {
exec(command, function(err,stdout,stderr){
if(err) {
cb(stderr);
} else {
cb(stdout);
}
});
}
run_shell_command("ls", function (result) {
// handle errors here
} );
Run Code Online (Sandbox Code Playgroud)
或者您可以将 exec 调用包装在一个承诺中并使用 async await
const util = require("util");
const { exec } = require("child_process");
const execProm = util.promisify(exec);
async function run_shell_command(command) {
let result;
try {
result = await execProm(command);
} catch(ex) {
result = ex;
}
if ( Error[Symbol.hasInstance](result) )
return ;
return result;
}
run_shell_command("ls").then( res => console.log(res) );
Run Code Online (Sandbox Code Playgroud)
小智 5
2022 年可以更简单地完成:
var r = execSync("ifconfig");
console.log(r);
Run Code Online (Sandbox Code Playgroud)
您必须像这样导入:
const execSync = require("child_process").execSync;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7629 次 |
| 最近记录: |