我正在使用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"
]