在node.js中,我想找到一種方法來獲取Unix終端命令的輸出。有沒有辦法做到這一點?在node.js中獲取shell命令的輸出
function getCommandOutput(commandString){
//now how can I implement this function?
//getCommandOutput("ls") should print the terminal output of the shell command "ls"
}
在node.js中,我想找到一種方法來獲取Unix終端命令的輸出。有沒有辦法做到這一點?在node.js中獲取shell命令的輸出
function getCommandOutput(commandString){
//now how can I implement this function?
//getCommandOutput("ls") should print the terminal output of the shell command "ls"
}
多數民衆贊成在我現在工作的項目中做到這一點。
var exec = require('child_process').exec;
function execute(command, callback){
exec(command, function(error, stdout, stderr){ callback(stdout); });
};
例子:獲取git的用戶
module.exports.getGitUser = function(callback){
execute("git config --global user.name", function(name){
execute("git config --global user.email", function(email){
callback({ name: name.replace("\n", ""), email: email.replace("\n", "") });
});
});
};
'上刪除了'.exec'部分後就可以使用這個函數返回命令的輸出了嗎? (這就是我想要做的。) –
多數民衆贊成在代碼做什麼。看看編輯中的示例我剛剛製作了 – renatoargh
@AndersonGreen您不希望該功能通過「返回」鍵盤正常返回,因爲它正在異步運行shell命令。因此,最好傳遞一個回調代碼,這個代碼應該在shell命令完成時運行。 –
您正在尋找child_process
var exec = require('child_process').exec;
var child;
child = exec(command,
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
正如指出的雷納託,也有一些同步的exec包在那裏現在也看到sync-exec這可能是更多的什麼yo're尋找。請記住,node.js被設計成一個單線程高性能網絡服務器,所以如果這就是你想要使用它的地方,那麼遠離sync-exec還有一些東西,除非你只在啓動時使用它或者其他的東西。
在這種情況下,我如何獲得命令的輸出?是包含命令行輸出的「stdout」嗎? –
另外,是否有可能做類似的事情,而不使用回調? –
正確,標準輸出包含程序的輸出。不,沒有回調就無法做到。 node.js中的所有東西都是以非阻塞爲導向的,這意味着每次執行IO時都將使用回調函數。 – hexist
這是一個重複的,或者它描述完全不同的東西? http://stackoverflow.com/questions/7183307/node-js-execute-command-synchronously-and-get-result –
[This](http://davidwalsh.name/sync-exec)可能會讓你感興趣。 – benekastah