在 ruby 脚本中,我们可以在控制台中传递这样的参数:
`ruby r3.rb sam sou "samarth pandey"`
这将在一个数组中接收,但现在我想发送这样的参数
`ruby sam sou {:sam => abc, :sou => abc}`
那么我该怎么做我不想让我的哈希像字符串一样
`ruby sam sou "{:sam => abc, :sou => abc}"`
在 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 Hash 语法,您可以执行以下操作:
foo.rb:
p eval(ARGV.join(' ').gsub(/: (.+?)([,|}])/, ': "\1"\2'))
在外壳中:
$ ruby foo.rb {lkj: dssd, kjdsh: kldiu} #=> {:lkj=>"dssd", :kjdsh=>"kldiu"}
我认为这不是很优雅,也不是语法有效的 Ruby,因为缺少值的引号,但这将是您任务的解决方案。