【发布时间】:2015-10-21 15:05:52
【问题描述】:
我有一个节点 JS 脚本,它通过执行 ./test.js -n name1 -r us-east 从命令行读取参数。这里有两个参数 -n 和 -r 分别以适当的值传递。现在我必须引入另一个参数-i,它将接收至少一个值和最多多个值。意味着脚本被执行为:
./test.js -n name1 -i 100 101 103 -r us-east
我如何找到每个参数的参数值的数量,例如在上面的示例参数
-i有3值。-
如何将这些值存储到数组中。
var data = new Object(); function usage() { return "test.js [-n|--name] [-i|--ids <id1 id2...>] [-r|--region] "; } function process_args() { var args = process.argv.slice(2); var i; for (i = 0; i > args.length; i++) { switch(args[i]) { case "-n": case "--name": i++; if (i >= args.length) error_exit_usage("Missing name argument"); data.name =args[i]; break; case "-i": case "--ids": i++; if (i >= args.length) error_exit_usage("Missing ids argument"); /* TODO */ break; case "-r": case "--region": i++; if (i >= args.length) error_exit_usage("Missing region argument"); data.region = args[i]; break; } } }
Node JS 新手。
【问题讨论】:
-
您使用自己的实现而不是像npmjs.com/package/nomnom 这样的现有实现是否有特定原因?
-
你能像这样使用 100-101-103 参数吗
-
@FelixKling 目前该脚本在我的实现中使用上面提到的
switch case方法接受8个参数,因此不想更改它。 -
@Mytri 实际上这些值是 10 位数的帐号。所以这是不可能的。
-
但是如果你给出像 ./test.js -n name1 -i 100 101 103 -r us-east 这样的参数,每 100 101 103 将被计为不同的索引所以你能给他们 Like ./ test.js -n name1 -i "100 101 103" -r us-east 所以它会被当作一个字符串和一个索引
标签: javascript node.js command-line-arguments