命令行参数ruby



Hooray,它愚蠢的问题日!;)

我知道足够多的红宝石是危险的,但不知道很多基本的东西。有人能告诉我一些文档吗,或者帮助我如何让我的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|
....
#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

首先,您正走在正确的轨道上。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

并将文件名保存为:

filename = ARGV.first

或者,

filename = ARGV[0]

这是ARGV的文档。

最新更新