Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:将ARGV转换为字符串_Ruby - Fatal编程技术网

Ruby:将ARGV转换为字符串

Ruby:将ARGV转换为字符串,ruby,Ruby,问题:有没有一种简单的方法可以用Ruby打印出元素之间用空格分隔的数组 详细信息: 我想使用Ruby对命令进行基准测试并运行该命令。比如: script.rb ./command_name arg1 arg2 arg3 ... 例如: script.rb ls -lh 应该运行ls-lh。我试图通过以下方式实现这一点: require 'benchmark' puts Benchmark.measure{system(ARGV.to_s)} (注意忽略这个问题的基准,我只是把它包括进来

问题:有没有一种简单的方法可以用Ruby打印出元素之间用空格分隔的数组

详细信息

我想使用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解决方案,但我还没有找到,所以我想知道是否有人有建议。

[Update]

你应该使用

[原答覆]

您可以轻松地将数组的元素连接在一起。ARGV是一个数组

ARGV.join(" ")

要生成可重用的参数字符串,请执行以下操作:

ARGV.map{|arg| Shellwords.escape arg}.join(' ')

如果您希望在任何参数中使用空格,则需要对其进行转义:
require'shellwords'
然后
escaped_args=ARGV.map{| arg | shellwords.escape arg}.join'
这是一个比我的更好的答案,应该标记为已接受。别忘了
需要'shellwords'
。注意,你也可以使用
shellwords.shelljoin(ARGV)
或者(一旦你
需要'shellwords'
ARGV.shelljoin
我在一个流浪者文件中使用了它,不需要
任何东西。不过,我不知道这是否会影响到普通的Ruby。