2012-05-12 3 views
1

질문 : 요소를 공백으로 구분하여 Ruby에서 배열을 인쇄하는 간단한 방법이 있습니까?Ruby : ARGV를 문자열로 변환

세부는 :

나는 벤치 마크 명령에 루비를 사용하여 명령을 실행합니다. 같은 뭔가 : 예를 들어

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

는 :

script.rb ls -lh 

ls -lh를 실행해야합니다.

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

(난 그냥 포함이 질문에 대한 벤치 마크를 무시하는 것으로 그 때문에 나는이 사용하고 무엇을)하지만 ARGV는 공백없이 인쇄됩니다 때문이 작동하지 않습니다 나는이 작업을 수행하기 위해 노력했다. 예를 들어 ls -lhls-lh이됩니다. 분명히 ARGV 배열을 구문 분석하고 루프에서 요소 사이에 공백을 삽입하여 내 자신의 문자열을 만들 수 있습니다. 하지만 더 우아한 Ruby 솔루션이 있다고 가정합니다. 그러나 아직 그 중 하나를 이해할 수는 없으므로 누구에게도 제안이 있는지 궁금합니다.

답변

7

배열 요소를 쉽게 결합 할 수 있습니다. with join. ARGV는 배열입니다. | 인수 |`다음`escaped_args = ARGV.map를 {shellwords'` '이 필요합니다 당신이 인수의 공백을 기대한다면

ARGV.join(" ") 
+1

, 당신이 그들을 탈출해야합니다 Shellwords.escape arg} .join ''' – hammady