Bir ARGV benzeri diziye bir dizi komut satırı bağımsız değişkenini bölmeme izin verecek bir Ruby yöntemi veya normal bir ifade istiyorum. Ne soruyorum this question, ama Ruby'de benzer.ARGV doldurmak için kabukların yaptığı bir dizeyi nasıl bölebilirim?
Trollop kullanarak komut satırı girişini işleyen bir Ruby programına ilişkin birim testleri yazıyorum (bu soru başka herhangi bir seçenek ayrıştırıcısı için aynı olsa da).
Ben test etmek istiyorum yöntem aşağıdaki gibidir: Benim programda
def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end
, ben parse_args(ARGV)
diyoruz. Testimde, boşluklara bölünmüş bir dizgeyi geçebileceğimi düşündüm, fakat bu ARGV'nin davranışı değil. Eğer 1.9 kullanıyorsanız
./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]
'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]
+1, ancak bunun 1.8.7'de de çalıştığını belirtmek isteriz. (ve hatta 1.8.6, sadece denedim). http://www.ruby-doc.org/ruby-1.8/classes/Shellwords.html –
@Michael: Teşekkürler, hangi sürümlerde mevcut olduğu konusunda muğlak bilgiler alıyordum, bu yüzden yalnızca doğrulayabildiğim şeyleri dahil ettim. –