我想从命令行传递一个数组的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的。
更新: 刚刚更新的问题表明,可以在不同的位置
Thanx Edu。我传递的数组是一组字符串,文件路径是特定的。真的很感激,如果你能给出正确的语法来传递字符串数组,这样的:JRuby的test.rb [“路径1”,“路径2”],3,[“NAME1”,“NAME2”],8 – codeObserver 2012-03-08 18:41:19
添加“ jruby test.rb [\“path1 \”,\“path2 \”],3,[\“name1 \”,\“name2 \”],8 .. Thnx,这对我很有用! – codeObserver 2012-03-08 19:09:05
嗨codeObserver,你可以在EVAL改成这样: 的eval( “富” + ARGV.join(”“).gsub(/(\ w +)/ ' “\ 1”')),所以你不如果你想要的话,需要跳过传递参数 – Edu 2012-03-08 21:53:53