如何解析字符串以使对象适合插入 ARGV?



我正在使用optparse来解析Ruby程序中的命令行。

我想为用户添加一个环境变量MYAPP_OPTIONS的功能,其中包含一个包含通常在命令行上指定的选项的字符串,例如--verbose.我想在ARGV前面加上这些选项。

是否已经有某种内置的方法可以做到这一点?我知道我如何直接操作ARGV数组,但是我将如何将字符串解析到 ARG 列表中?这并不像在空格上拆分那么简单,因为空格可能会被引用并成为参数的一部分。

Shellwords 是处理这种事情的 Ruby 库,可以通过这样的事情来实现:

[6] pry(main)> require 'shellwords'
false
[7] pry(main)> Shellwords.shellsplit %Q{ arg1 "arg2a arg2b"}
[
[0] "arg1",
[1] "arg2a arg2b"
]

可以像这样将这些添加到数组中:

[13] pry(main)> my_argv = %w(foo bar) # create a sample array to illustrate
[
[0] "foo",
[1] "bar"
]
[18] pry(main)> my_argv.unshift(Shellwords.shellsplit %Q{ arg1 "arg2a arg2b"}).flatten!
[
[0] "arg1",
[1] "arg2a arg2b",
[2] "foo",
[3] "bar"
]

最新更新