Я пишу программу, для которой требуются аргументы для запуска, одним из возможных аргументов является возможность использовать файл, передав программу -f <file>
. Я не понимаю, где это происходит, я пытаюсь прочитать файл как ARGV[1]
, потому что это второй аргумент, данный программе.Чтение файла, переданного как аргумент при использовании optparse
Однако вызов ARGV[1]
ничего не выводит, однако, если я добавил еще два аргумента поверх флага и имени файла, а затем вызывается ARGV[1]
, он выдает последний аргумент, указанный как 1? Так, например:
ruby testparse.rb -f test.txt
#<= Nothing there
Но если бы я сделал это:
ruby testparse.rb -f test.txt test ttest
#<= ttest
ARGV[1]
Это ставит на месте ARGV[3]
? Итак, мои вопросы:
- Почему я не могу позвонить в файл как
ARGV[1]
, передавая его через optparse? - Как я могу вызвать файл, который нужно прочитать при использовании optparse?
Источник:
require 'optparse'
options = {}
OptionParser.new do |opt|
opt.on('-f=FILE', '--file=FILE', 'File it') { |o| options[:file] = o }
end.parse!
if ARGV[1].nil?
puts "Nothing there"
else
puts ARGV[1]
end
Я понял, для меня лично кажется, что вы все равно сможете назвать это из «ARGV», хотя не думаете? – JasonBorne