2015-11-11 11 views
-2

Ура, его немой вопрос день! ;)Аргументы командной строки 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| 
.... 

ответ

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.

+0

'puts ARGV.inspect' => Или, если вы предпочитаете делать меньше ввода:' p ARGV'. – 7stud

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 
Смежные вопросы