2012-05-12 138 views
1

問題:有沒有一種簡單的方法可以在Ruby中打印出一個元素,並用空格分隔元素?Ruby:將ARGV轉換爲字符串

詳細

我想用Ruby基準命令和運行命令。喜歡的東西:

script.rb ./command_name arg1 arg2 arg3 ... 

例如:

script.rb ls -lh 

應該運行ls -lh。我試圖做到這一點與:

require 'benchmark' 
puts Benchmark.measure{system(ARGV.to_s)} 

(注意忽略這個問題,我只是包括基準,因爲我使用這是什麼了),而是因爲ARGV地沒有空格打印不起作用。例如ls -lh變成ls-lh。很明顯,我可以通過解析ARGV數組並在循環中的元素之間插入空格來創建自己的字符串。但我認爲有一個更優雅的Ruby解決方案,但我還沒有能夠找出一個,所以我想知道如果有人有任何建議。

回答

7

您可以輕鬆地將Array的元素連接在一起with join。 ARGV是一個數組。

ARGV.join(" ") 
+1

如果您希望在任何參數中有空格,您需要轉義它們:'require'shellwords'' then'escaped_args = ARGV.map {| arg | Shellwords.escape arg} .join''' – hammady