我想创建一个脚本,并以这样的方式启动:
yarn start arg1, arg2, arg3
它工作正常,我恢复了以下文件中所有参数:
const args = process.argv.slice(2);
但如果我想做:
yarn start arg1, arg2, arg3, ['option1', 'option2']
它不起作用,出现错误:
zsh: no matches found: [option1]
有时我需要一个选项数组,而args可以是无限的谢谢
o7jaxewo1#
process.argv将包含您传递的所有参数,无论有多少个参数。您得到的错误来自shell(zsh),而不是Node或Yarn -您需要引用包含特殊字符的参数,例如[]:
process.argv
[]
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']" ]
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; }
2条答案
按热度按时间o7jaxewo1#
process.argv
将包含您传递的所有参数,无论有多少个参数。您得到的错误来自shell(zsh),而不是Node或Yarn -您需要引用包含特殊字符的参数,例如
[]
:jdgnovmf2#
我有同样的基本问题--这给我指明了正确的方向:https://stackoverflow.com/a/41402909/826308
在我的例子中,即使JSON.parse()失败,我也需要获得一个数组,所以我使用了以下代码: