模仿process.argv

时间:2014-11-19 07:01:38

标签: javascript node.js command-line

我传递了一个命令行参数字符串,我想把它变成一个数组。

通常,我可以这样做:

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不同。

谢谢。

1 个答案:

答案 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