2017-06-15 49 views
0

我正在写一个命令行界面使用节点指挥官,并坚持解析单引号内的参数。我搜索了文档和StackOverflow,但没有发现任何结论。解析与节点命令引号

有没有办法传入一个包含单引号的参数?


抽象掉我所知道的作品,有什么我留下的是一个CLI,其中运行:

node test.js command 'value''s values' 

与以下程序(信用here,用于简单起见,运作示例):

#!/usr/bin/env node 
'use strict'; 

const program = require('commander'); 
program 
    .version('0.0.1') 
    .command('command <req> [optional]') 
    .action(function(req,optional){ 
     console.log('User passed %s', req); 
    }); 
program.parse(process.argv); 

结果是User passed values values,其缺少从参数的第一个字的单引号。期望的输出是User passed value's values

回答

1

你需要逃避撇号。这将工作:

node test.js command 'value'\''s values'

这工作,因为一些所谓的“强引用”。你可以阅读更多关于它here

强引用手段,这也能发挥作用:

node test.js command "value's values"

+0

哼!对我感到羞耻 - 我试图用更广泛的程序来做这件事,但它并不会在那里工作,但它看起来像是创建实际命令的脚本的问题,而不是解析命令的参数。谢谢! –