从命令行执行程序

时间:2015-10-05 16:16:28

标签: ruby

我做了一个程序,将请求发送到URL并将其保存在文件中。该计划就是这样,并且运作良好:

require 'open-uri' 

n = gets.to_i 
out = gets.chomp
output = File.open( out, "w" )

for i in 1..n
  response = open('http://slowapi.com/delay/10').read
  output << (response +"\n")
  puts response
end

output.close

我想修改它,以便我可以从命令行执行它。我必须这样运行:

fle --test abc -n 300 -f output

我该怎么办?

3 个答案:

答案 0 :(得分:1)

这样的事情可以解决问题:

app.php

答案 1 :(得分:1)

这是编写代码的更惯用的方法:

require 'open-uri' 

n = gets.to_i 
out = gets.chomp

File.open(out, 'w') do |fo| 

  n.times do
    response = open('http://slowapi.com/delay/10').read
    fo.puts response
    puts response
  end

end

这将File.open与块一起使用,这允许Ruby在块退出时关闭文件。将文件句柄分配给变量并稍后将其用于close文件是一种更好的做法。

如何处理从命令行传入变量,因为选项在其他答案中处理。

答案 2 :(得分:0)

第一步是将程序保存在文件中,在顶部添加#!/usr/bin/env ruby,然后chmod +x yourfilename以便能够执行您的文件。

现在您可以从命令行运行脚本了。

其次,您需要稍微修改脚本以获取命令行参数。在Ruby中,命令行参数存储在ARGV内,所以类似

ARGV.each do|a|
  puts "Argument: #{a}"
end

允许您检索命令行参数。