我传递了一个命令行参数字符串,我想把它变成一个数组。
通常,我可以这样做:
node log_argv.js --howdy="boop \"\' dkjf roop" what -jump -gop=30
log_argv.js:
console.log(process.argv.slice(2));
响应是:
[ '--howdy=boop "\\\' dkjf roop', 'what', '-jump', '-gop=30' ]
如果在我的脚本中给出argv字符串并且我实际上不能使用process.argv,我在这种情况下如何模仿process.argv?例如,我可能有一个脚本:
var arg_string = '--howdy="boop \"\' dkjf roop" what -jump -gop=30'
var arg_array = parse_arguments(arg_string);
console.log(arg_array);
结果应如上所述,即:
[ '--howdy=boop "\\\' dkjf roop', 'what', '-jump', '-gop=30' ]
我最近看到的是:https://github.com/mccormicka/string-argv。但是考虑到上面的参数字符串,我得到的结果与process.argv不同。
谢谢。
答案 0 :(得分:2)
您可以使用shellwords
端口以与bash相同的方式解析字符串。
在npm(https://github.com/jimmycuadra/shellwords)上有一个名为shellwords
的ruby的shellwords模块的javascript版本。
npm install shellwords
然后在你的代码中:
var shellwords = require('shellwords');
shellwords.split("foo 'bar baz'");
// ["foo", "bar baz"]
您可以在此处测试:https://api.blockspring.com/jtokoph/8c997e4dd22157e7d07a23123f08fc0d