Читання аргументів командного рядка

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.