ruby - 将数组作为命令参数传递

标签 ruby bash shell command-line arguments

我正在尝试从命令行将数组传递给 ruby​​ 脚本,但遇到了一些问题。

问题是:

require 'pp'

def foo(arr1, var, arr2, var2)
  puts arr1.class
  pp arr1
  pp arr1[0]
  puts arr2.class
  pp arr2
  pp arr2[0]
end

foo [1, 2], 3, [5, 6], 8

这是输出:

Array
[1, 2]
1
Array
[5, 6]
5

到目前为止一切都很好。现在我更改我的脚本以接受来自命令行的参数:

require 'pp'

def foo(arr1,var)
  puts arr1.class
  pp arr1
  pp arr1[0]
end
foo ARGV[0],3

这是输出:

jruby test.rb [1, 2], 3, [5, 6], 8
String
"[1,"
91
String
"2],"
50

如您所见,数组作为字符串传递,并且 arr[0] 基本上打印 ascii 值。

所以问题是我如何从命令行传递一个数组,希望是在一行中。 另外我相信这个问题与所有 shell 调用有关,而不仅仅是 ruby​​ ?

我正在使用 bash shell。

更新: 刚刚更新了问题以表明在不同位置可以有多个数组

最佳答案

这是一个 list实现这一目标的方法。远离基于eval 的解决方案。我最喜欢的(虽然我不懂 ruby ,但这是我最喜欢的:

irb(main):001:0> s = "[5,3,46,6,5]"
=> "[5,3,46,6,5]"
irb(main):002:0> a = s.scan( /\d+/ )
=> ["5", "3", "46", "6", "5"]
irb(main):003:0> a.map!{ |s| s.to_i }
=> [5, 3, 46, 6, 5]

关于ruby - 将数组作为命令参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614283/

相关文章:

bash - 将 nohup 的标准错误重定向到 nohup.out

linux - 用于移动文件及其父目录的 Bash 脚本

ruby-on-rails - 如何在 Ruby 中划分字符串?

linux - 使用 sed 删除行

ruby - 不使用端口时正在使用的端口

python - 使用 runuser 时重定向到文件的奇怪行为

bash - 通过Oozie Shell脚本运行配置单元查询时未找到表异常

linux - 将字符串传递给脚本

ruby-on-rails - 如何在我的 Rails View 中显示外部站点?

ruby-on-rails - 仅使用下一个按钮分页