题 创建一个接受命令行参数的脚本


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

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


33
2017-10-17 01:23


起源


可能重复 如何将命令行参数传递给node.js? - Anderson Green
如果我在npm启动时启动我的脚本,可以使用相同的吗? - Shruthi Bhaskar


答案:


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

总之,你会像它一样运行它

node stuff.js blah hee "whoohoo!"

然后你的论点可用 process.argv


43
2017-10-17 01:27



这适用于Windows以及Mac / Linux / Unix吗? - Anderson Green
是的,这是所有平台的标准配置 - hexist
另外,字符串“whoohoo”的引号是否必要(或者是拼写错误)? - Anderson Green
在* nix中,感叹号用于shell中的事件指示符,因此在您希望文字字符“!”的情况下引用或转义参数是一种好习惯。 (请注意,你的程序不会在argv的第5个条目中获取引号作为字符串的一部分,它只是whoohoo!) - hexist
@hexist如果你有一个被称为的参数怎么办? ah hah 并需要将其添加到参数列表?你是否也必须像你所做的那样引用它 woohoo! 以上以便调用 node stuff.js blah hee "whoohoo!" "ah hah"? argv文档没有详细介绍有空格的变量,这很重要,因为它似乎在空格上划界。 - Wimateeka


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

为了好玩


14
2017-10-17 08:06





Nomnom 是另一种可能的解决方


3
2018-04-15 05:49





这个简单的节点模块也很有用: 命令行-ARGS

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

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

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


0
2018-04-01 19:42