在 ruby 脚本中,我们可以在控制台中传递这样的参数:
`ruby r3.rb sam sou "samarth pandey"`
这将在一个数组中接收,但现在我想发送这样的参数
`ruby sam sou {:sam => abc, :sou => abc}`
那么我该怎么做,我不想让我的哈希像字符串一样
`ruby sam sou "{:sam => abc, :sou => abc}"`
没有
引号传递哈希,因为 shell 会将>
识别为输出重定向,并将脚本的输出通过管道传输到名为 abc}
的文件中。
编辑:
使用 Ruby 1.9 哈希语法,您可以执行以下操作:
foo.rb:
p eval(ARGV.join(' ').gsub(/: (.+?)([,|}])/, ': "1"2'))
在外壳中:
$ ruby foo.rb {lkj: dssd, kjdsh: kldiu} #=> {:lkj=>"dssd", :kjdsh=>"kldiu"}
我认为这不是很优雅,语法也不是有效的 Ruby,因为缺少值的引号,但它将是您任务的解决方案。