我想從命令行傳遞一個數組的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