在nodejs脚本中,我有以下代码同步调用并从我调用的shell脚本返回stdout:
var sh = require('shelljs');
... some code
var output = sh.exec('./someshellscript.sh', {silent:true}).stdout;
console.log(output);
... some more code (that shouldnt run until the script is complete)
我还可以运行以下脚本,它将返回stderr:
var sh = require('shelljs');
... some code
var output = sh.exec('./someshellscript.sh', {silent:true}).stderr;
console.log(output);
... some more code (that shouldnt run until the script is complete)
但是我希望在同步调用中同时接收stdout和stderr。它可能是我在这里失踪的非常明显但我无法解决的问题。
我认为您以前在以前的版本中可以运行以下命令,但现在只返回undefined:
var sh = require('shelljs');
... some code
var output = sh.exec('./someshellscript.sh', {silent:true}).output;
console.log(output);
... some more code (that shouldnt run until the script is complete)
相关软件版本为:
任何帮助表示感谢。
答案 0 :(得分:8)
来自README for the method exec(command [, options] [, callback])
同步执行给定命令,除非另有说明。 [...],返回{code:...,stdout:...,stderr:...}形式的对象。
因此
const { stdout, stderr, code } = sh.exec('./someshellscript.sh', { silent: true })