【问题标题】:Make a script which accept command-line arguments制作一个接受命令行参数的脚本
【发布时间】:2012-10-07 04:59:58
【问题描述】:

在 Linux 或 Mac 上运行带有命令行参数的 Node.js 脚本的正确语法是什么?

要运行不带参数的脚本,我只需使用命令node stuff.js,但在这种情况下,我想运行一个名为stuff.js 的脚本并带有参数"blah", "hee", "woohoo!"

【问题讨论】:

标签: node.js command-line-arguments


【解决方案1】:

http://nodejs.org/docs/latest/api/process.html#process_process_argv

总而言之,你会像这样运行它

node stuff.js blah hee "whoohoo!"

那么你的论点在process.argv中可用

【讨论】:

  • 这是否适用于 Windows 以及 Mac/Linux/Unix?
  • 是的,这是所有平台的标准
  • 另外,字符串 "whoohoo" 上的引号是否必要(或者是错字)?
  • 在 *nix 中,感叹号用于 shell 中的事件指示符,因此最好在需要文字字符“!”的地方引用或转义参数。 (请注意,您的程序不会在 argv 的第 5 个条目中将引号作为字符串的一部分,它只会是哇哦!)
  • @hexist 如果您有一个名为ah hah 的参数并且需要将其添加到参数列表中怎么办?您是否还必须像上面对woohoo! 所做的那样引用它,以便调用是node stuff.js blah hee "whoohoo!" "ah hah"? argv 文档没有详细介绍带空格的 var,这很重要,因为它似乎以空格分隔。
【解决方案2】:

如果你想做更复杂的事情,以下模块真的很有帮助:

为了好玩

【讨论】:

    【解决方案3】:

    Nomnom 是另一种可能的解决方案。

    【讨论】:

      【解决方案4】:

      这个简单的节点模块也很有帮助:command-line-args

      它允许定义一个简单的定义:

      const optionDefinitions = [
        { name: 'verbose', alias: 'v', type: Boolean },
        { name: 'src', type: String, multiple: true, defaultOption: true },
        { name: 'timeout', alias: 't', type: Number }  
      ]
      

      它验证您的选项并允许您以简单的方式访问它们。

      【讨论】:

        【解决方案5】:

        参数存储在

        process.argv 并在命令行中传递参数,请检查以下示例:

        例如。在下面的这个例子中,我使用了指挥官 NPM 模块。 var args = require('commander')

        Options 使用 .option() 方法定义指挥官。 下面的示例解析 process.argv 中的 args 和 options,将剩余的 args 保留为 program.args 数组,它们没有被 options 使用。 这里的 process.argv 是一个包含命令行参数的数组。第一个元素是“节点”,第二个元素是 JavaScript 文件的名称。下一个元素将是任何附加的命令行参数 执行后。

        function list(val) {
            return val.split(',');
        }
        args.version('0.11.2')
            .option('-t, --tag [value]', 'tags to ignore', list, undefined)
            .parse(process.argv);
        

        这里要从命令行获取输入,我们必须使用 -t 执行 .js 文件,然后使用逗号(,)分隔多个参数 前。 : 节点 example.js -t 标记名 这里我使用 list 来处理多个命令行参数,这样我们就可以传递多个命令行参数 前。节点 example.js -t tagname1, tagname2 所以在此之后,所有作为命令行参数传递的输入都将在名为 args 的数组中可用,因此可以将此数组用于您的目的 和 你可以从这里阅读更多关于它的信息:-

        https://nodejs.org/docs/latest/api/process.html#process_process_argv

        或者您可以使用以下模块:

        1. 指挥官:-

        https://www.npmjs.com/package/commander

        1. yargs :-

        https://www.npmjs.com/package/yargs

        1. vorpal :-

        https://www.npmjs.com/package/vorpal

        【讨论】:

        • 问题是关于如何将参数传递给节点脚本,而不是如何在脚本中处理它们。
        猜你喜欢
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 2022-11-25
        • 2020-03-04
        相关资源
        最近更新 更多