Я пытался выяснить, как сделать флаги с помощью ARGV
(я знаю о optparser, я не хочу, чтобы использовать его)Изготовление флагов и работает DEFUALT когда никто не дал ARGV
Что я хотел бы чтобы сделать, это флаг, чтобы загрузить файл, и флаг, чтобы показать помощь, если ни один флаг не дано, я хочу, чтобы запустить программу, как она стоит ..
Пример say_hi.rb:
def usage
$stderr.puts("Usage: #{File.basename}: [-f|u] <file/path/>")
exit
end
$file = nil
$help = usage
loop { case ARGV[0]
when '-f' then ARGV.shift; $file = ARGV.shift
when '-h' then ARGV.shift; $help = ARGV.shift
else
#No flag given, run program with "John" as the method argument
end }
def say_hi(name)
puts "Hi #{name}! How are you?!"
end
say_hi("John")
Токовый выход:
C:\Users\Jason\MyScripts>ruby say_hi.rb
Usage: say_hi.rb: [-f|u] <file/path/>
C:\Users\Jason\MyScripts>ruby say_hi.rb -f john.txt
Usage: say_hi.rb: [-f|u] <file/path/>
C:\Users\Jason\MyScripts>ruby sayhi.rb -h
Usage: say_hi.rb: [-f|u] <file/path/>
john.txt:
John
Ожидаемый результат:
#running without flag =>
ruby say_hi.rb
#<= Hi John! How are you?!
#running with -h flag(help) =>
ruby say_hi -h
#<= Usage: say_hi: [-f|u] <file/path/>
#running with the -f flag(file) =>
ruby say_hi -f temp/name_file.txt
#<= Hi John! How are you?!
Как я могу выполнить это делать?
Что такое 'say_hi.rb'? – sawa
@sawa Извините за путаницу, отредактировал вопрос, чтобы быть более конкретным. – JasonBorne
ваш код выглядит так, как будто это сработает. какая у вас проблема? Кстати, если вы запустите 'FOO = BAR irb', то в irb вы можете получить доступ к ENV [" FOO "] # =>" BAR "'. Если вам нужно выйти из программы раньше, просто используйте 'exit'. –