2012-09-21 134 views
1

在Ruby腳本,我們可以在控制檯通過參數是這樣的:紅寶石控制檯參數

`ruby r3.rb sam sou "samarth pandey"` 

這將收到一個數組中,但現在我想這樣

`ruby sam sou {:sam => abc, :sou => abc}` 

發送參數因此,如何能我這樣做我不想讓我的哈希像字符串一樣

`ruby sam sou "{:sam => abc, :sou => abc}"` 
+0

爲什麼不把你的散列串化,並評估它?看起來像是一個完全合理的方式去實現它,如果你不打算只把值放在一些init文件中。 – bdares

+2

選中此類http://apidock.com/ruby/OptionParser。有一個處理命令行參數/選項/開關的全面例子。 – jdoe

+0

它是一種很好的方式,我意識到這一點,因爲我提到了我的問題,但現在我正在尋找其他解決方案,因爲我必須對雲配置文件進行處理,因此不建議在那裏進行大量操作。 – SSP

回答

3

有沒有辦法通過散列沒有引號,因爲shell會將>識別爲輸出重定向,並將腳本的輸出傳輸到名爲abc}的文件中。

編輯:

隨着Ruby 1.9的哈希語法,你可以做這樣的事情:

foo.rb:

p eval(ARGV.join(' ').gsub(/: (.+?)([,|}])/, ': "\1"\2')) 

在shell:

$ ruby foo.rb {lkj: dssd, kjdsh: kldiu} #=> {:lkj=>"dssd", :kjdsh=>"kldiu"} 

我認爲這不是很優雅,也沒有語法有效的Ruby,因爲值的引號缺失,b這將是你的任務的解決方案。

+0

偉大的人真的很好 – SSP