Ruby:
Читання аргументів командного рядка
Як це зробити:
Аргументи командного рядка доступні через глобальний масив ARGV
. Приклад:
# script.rb
puts "Ви ввели: #{ARGV}"
Якщо ви запустите:
ruby script.rb Це тест
Отримаєте:
Ви ввели: ["Це", "тест"]
Отримання конкретних аргументів:
# specific_arg.rb
puts "Перший аргумент: #{ARGV[0]}"
puts "Другий аргумент: #{ARGV[1]}"
Запуск:
ruby specific_arg.rb раз два
Результат:
Перший аргумент: раз
Другий аргумент: два
Використання OptionParser
для аргументів з іменами:
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Використання: script.rb [опції]"
opts.on("-n", "--name NAME", "Введіть ім'я") do |n|
options[:name] = n
end
opts.on("-a", "--age AGE", "Введіть вік") do |a|
options[:age] = a
end
end.parse!
puts "Ім'я: #{options[:name]}"
puts "Вік: #{options[:age]}"
Запуск:
ruby script.rb --name "Олег" --age "35"
Результат:
Ім'я: Олег
Вік: 35
Поглиблений розгляд:
Аргументи командного рядка - не новинка, вони існують з моменту появи перших операционних систем. У Ruby, ARGV
- це простий спосіб отримання даних, але існують альтернативи.
OptionParser
є більш потужним для іменованих аргументів та валідації;ENV
містить змінні середовища, ящо ще один спосіб модифікації поведінки програми.gets
дозволяє читати ввод з консолі після запуску програми.
Варто зберегти аргументи в змінну, якщо плануєте їх часто використовувати - це може зменшити можливі помилки і поліпшити читабельність.
Подивитися також:
- OptionParser - документація по
OptionParser
. - Environment Variables in Ruby - стаття з роз’ясненням роботи зі змінними середовища.
- The ARGF Object - документація по ARGF, об’єкт який представляє поєднання
ARGV
та$stdin
.