是否可以传递数组命令行参数nodejs?

quhf5bfb  于 2023-01-30  发布在  Node.js
关注(0)|答案(2)|浏览(182)

我想创建一个脚本,并以这样的方式启动:

yarn start arg1, arg2, arg3

它工作正常,我恢复了以下文件中所有参数:

const args = process.argv.slice(2);

但如果我想做:

yarn start arg1, arg2, arg3, ['option1', 'option2']

它不起作用,出现错误:

zsh: no matches found: [option1]

有时我需要一个选项数组,而args可以是无限的
谢谢

o7jaxewo

o7jaxewo1#

process.argv将包含您传递的所有参数,无论有多少个参数。
您得到的错误来自shell(zsh),而不是Node或Yarn -您需要引用包含特殊字符的参数,例如[]

yarn start arg1 arg2 arg3 "['option1', 'option2']"
  • 下面是一个显示输出的小示例程序:
/tmp $ echo 'console.log(process.argv)' > args.js
/tmp $ node args.js arg1 arg2 arg3 "['option1', 'option2']"
[
  '/usr/local/bin/node',
  '/tmp/args.js',
  'arg1',
  'arg2',
  'arg3',
  "['option1', 'option2']"
]
jdgnovmf

jdgnovmf2#

我有同样的基本问题--这给我指明了正确的方向:https://stackoverflow.com/a/41402909/826308
在我的例子中,即使JSON.parse()失败,我也需要获得一个数组,所以我使用了以下代码:

function stringToArray(str){
    var arr = [];
    if(str.indexOf('[',0) > -1 && str.indexOf(']',0) > -1){
    arr = JSON.parse(str);
  }else{
    arr.push(str);
  }
  return arr;
}

相关问题