将Array作为原始命令行参数

时间:2015-11-16 08:55:38

标签: javascript arrays node.js arguments

我正在尝试在Node.js中实现原始命令行参数。

当我实现简单变量时,一切正常

(node example.js variable)

但是当我作为一个参数实现一个数组它不起作用

(node example.js "['127.0.0.5', '127.0.0.3']" )

完整代码:

if (process.argv.length <= 3) {
    console.log("Usage: " + __filename + " SOME_PARAM");
    process.exit(-1);
}

var variable = process.argv[2];
var array = process.argv[3];

console.log('Host: ' + variable);
console.log('array: ' + array);

问题

参数输入示例(node example.js variable "['127.0.0.5', '127.0.0.3']"

如何将第二个参数("['127.0.0.5', '127.0.0.3']")作为数组而不是字符串(就像现在一样)传递,以便稍后我可以访问数组的第n个元素(例如array[0] = '127.0.0.5'

输入应该像('["127.0.0.5", "127.0.0.3"]'更改引号),我们还需要将参数解析为JSON。

if (process.argv.length <= 3) {
    console.log("Usage: " + __filename + " SOME_PARAM");
    process.exit(-1);
}

var variable = process.argv[2];
var array = JSON.parse(process.argv[4]);

console.log('Host: ' + variable);
console.log('array: ' + array);
console.log(array[1]

2 个答案:

答案 0 :(得分:3)

您无法传递数组。你需要做的(并且可能正在做的事情)是传递类似转换为JSON字符串的数组。

在应用程序中,您只需执行JSON.parse()即可将数组从字符串中删除。

答案 1 :(得分:0)

这是一个古老的问题,但是如果有人仍在寻找简单的解决方案,那就是这里。

多次传递具有相同名称的命名参数。

node example.js --variable=127.0.0.5 --variable=127.0.0.3

使用minimist NPM软件包将args提取为:

const parseArgs = require('minimist');

const args = parseArgs(process.argv.slice(2));
console.log(args.variable);

输出:

[ '127.0.0.5', '127.0.0.3' ]