命令行参数ruby?

时间:2015-11-11 21:22:45

标签: ruby

万岁,这是一个愚蠢的问题日! ;)

我知道足够的红宝石是危险的,但不知道很多基本的基础事物。任何人都可以指导我一些文档或帮助我如何让我的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|
....

2 个答案:

答案 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的文档。