模拟进程.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的主要内容,如果未能解决你的问题,请参考以下文章

Void main char argv os子进程

Android6.0系统启动流程分析一:init进程

Linux C程序修改进程名称

Unix环境高级编程进程环境

sys&faker&jsonpath模块异常处理多线程多进程

进程调度模拟程序