提问者:小点点

NodeJS将shell exec的输出捕获到const


我试图捕获shell exec的stdout,并将其分配给一个常量,以便以后检索。

//const { exec } = require("child_process");
const { promisify } = require('util');
const exec = promisify(require('child_process').exec)


async function shellexec2(command){
  const commandout = await exec(command)
  return { commandout }
};

var sentnlURL = "https://testapi.test.io/"
var origin = 'Origin: http://www.test.io'
var method = 'Access-Control-Request-Method: GET'
var corscheck = "curl -I -X OPTIONS -H "+origin+" -H "+method+" "+sentnlURL+" 2>&1 | grep -i 'Access-Control-Allow-Origin'"
var t = shellexec2(corscheck)
console.log(t)

我得到的唯一输出是Promise


共1个答案

匿名用户

因为shellexec2是一个用async标记的函数,它返回一个承诺,所以您需要解包它以获取值。 我会这样写:

//const { exec } = require("child_process");
const { promisify } = require('util');
const exec = promisify(require('child_process').exec)


async function shellexec2(command){
  const commandout = await exec(command)
  return { commandout }
};

(async function main(){
var sentnlURL = "https://testapi.test.io/"
var origin = 'Origin: http://www.test.io'
var method = 'Access-Control-Request-Method: GET'
var corscheck = "curl -I -X OPTIONS -H "+origin+" -H "+method+" "+sentnlURL+" 2>&1 | grep -i 'Access-Control-Allow-Origin'"
var t = await shellexec2(corscheck)
console.log(t)})();