1

Ruby スクリプトでは、コンソールで次のようなパラメーターを渡すことができます。

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

これは配列で受け取りますが、今はこのようなパラメーターを送信したいです

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

どうすればこれを行うことができますか?ハッシュを文字列のようにしたくありません

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

1 に答える 1

3

引用符なしでハッシュを渡す方法はありません。シェルは>出力リダイレクトとして認識し、スクリプトの出力をabc}.

編集:

Ruby 1.9 Hash 構文を使用すると、次のようなことができます。

foo.rb:

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

シェル内:

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

値の引用符が欠落しているため、これはあまりエレガントではなく、Rubyの構文も有効ではないと思いますが、それはあなたの仕事の解決策になるでしょう.

于 2012-09-21T21:30:03.083 に答える