模拟进程.argv
Posted
技术标签:
【中文标题】模拟进程.argv【英文标题】:Mimic process.argv 【发布时间】:2015-01-16 14:49:59 【问题描述】:我收到了一个命令行参数字符串,我想将其转换为数组。
通常,我可以这样做:
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】:您可以像 bash 一样使用shellwords
端口解析字符串。
在 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
【讨论】:
以上是关于模拟进程.argv的主要内容,如果未能解决你的问题,请参考以下文章