Node.js Shell脚本和参数

我需要在node.js中执行一个bash脚本 基本上,脚本将在系统上创build用户帐户。 我遇到了这个例子 ,让我知道如何去做。 但是,脚本本身需要像用户名,密码和用户真实姓名这样的参数。 我仍然无法弄清楚如何将这些parameter passing给脚本,如下所示:

var commands = data.toString().split('\n').join(' && '); 

有没有人有一个想法,我可以通过这些参数,并通过SSH连接在node.js中执行bash脚本。 谢谢

请参阅这里的文档。 这是非常具体的如何传递命令行参数。 请注意,您可以使用execspawnspawn具有命令行参数的特定参数,而使用exec时,只需将参数作为要执行的命令string的一部分传递即可。

直接从文档中解释注释内联

 var util = require('util'), spawn = require('child_process').spawn, ls = spawn('ls', ['-lh', '/usr']); // the second arg is the command // options ls.stdout.on('data', function (data) { // register one or more handlers console.log('stdout: ' + data); }); ls.stderr.on('data', function (data) { console.log('stderr: ' + data); }); ls.on('exit', function (code) { console.log('child process exited with code ' + code); }); 

而与exec

 var util = require('util'), exec = require('child_process').exec, child; child = exec('cat *.js bad_file | wc -l', // command line argument directly in string function (error, stdout, stderr) { // one easy function to capture data/errors console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); if (error !== null) { console.log('exec error: ' + error); } }); 

最后,请注意exec缓冲输出。 如果你想把输出stream回到客户端,你应该使用spawn

 var exec = require('child_process').exec; var child = exec('cat *.js | wc -l', function(error, stdout, stderr) { if (error) console.log(error); process.stdout.write(stdout); process.stderr.write(stderr); }); 

这样更好,因为console.log将打印空行。

你可以使用process.argv 。 这是一个包含命令行参数的数组。 第一个元素将是node ,第二个元素将是JavaScript文件的名称。 所有的下一个元素将是你给的任何额外的命令行。

你可以像这样使用它:

 var username = process.argv[2]; var password = process.argv[3]; var realname = process.argv[4]; 

或者遍历数组。 看看这个例子: http : //nodejs.org/docs/latest/api/all.html#process.argv