2

我想給的NodeJS啓動一個子進程,並保存其輸出到一個變量。下面的代碼給它到stdout:保存子進程中的變量在父的輸出的NodeJS

require("child_process").execSync("echo Hello World", {"stdio": "inherit"}); 

我想到的東西是類似下面的代碼:

var test; 
require("child_process").execSync("echo Hello World", {"stdio": "test"}); 
console.log(test); 

test值應該是Hello World

不工作,因爲"test"是不是一個有效的標準輸入輸出值。

也許這是可能的使用環境變量,但我沒有找到如何修改它們的子進程與結果仍然父可見。

回答

3

execSync回報命令的標準輸出傳遞中,這樣你就可以將其輸出存儲到下面的代碼變量的函數:

var child_process = require("child_process"); 
var test = child_process.execSync("echo Hello World"); 
console.log(test); 
// => "Hello World" 

要知道,這將拋出一個錯誤如果進程的退出代碼不爲零。此外,請注意,您可能需要使用test.toString(),因爲child_process.execSync可能會返回Buffer

+4

謝謝您的回答!我想補充一點,我必須使用'test.toString()',否則輸出是''。 – pfo

+0

@pfo會注意到這一點 - 我認爲它隨版本而變化,因爲我的本地副本沒有這樣做。 – Aurora0001