我知道足够的红宝石是危险的,但不知道很多基本的基础事物。任何人都可以指导我一些文档或帮助我如何让我的ruby代码获取我抛出的第一个参数(文件名)并将文件名存储在变量中?我试过了ARGV[0]
和ARGV.first
。
require 'mysql'
require 'nessus'
begin
filename = ARGV.first
scanTime = Time.now.to_i
Nessus::Parse.new(filename, :version => 2) do |scan|
....
答案 0 :(得分:1)
#myprog.rb
p ARGV
fname = ARGV[0]
puts fname
puts File.read(fname)
--output:--
$ cat data.txt
John: a,123,b,456
Sally: c,789,b,0
~/ruby_programs$ ruby myprog.rb data.txt 10 hello
["data.txt", "10", "hello"]
data.txt
John: a,123,b,456
Sally: c,789,b,0
答案 1 :(得分:0)
首先,你走在正确的轨道上。获取第一个参数的正确方法是ARGV[0]
或ARGV.first
。我怀疑你没有正确发送/接收参数。
在这种情况下,执行p ARGV
将帮助您解决这个问题。
要查看您收到的所有参数,请执行以下操作:
puts ARGV.inspect
,或者
p ARGV
这将为您提供一系列您传递的参数。像这样:
➜ ruby test.rb foo bar baz
# => ["foo", "bar", "baz"]
然后,根据您的需要,做:
puts ARGV.first
puts ARGV.last
并保存file_name,如下所示:
filename = ARGV.first
或,
filename = ARGV[0]
以下是ARGV的文档。