Чтение аргументов командной строки

Ruby:
Чтение аргументов командной строки

Как это сделать:

Для получения аргументов командной строки Ruby предоставляет простой массив: ARGV. Он содержит все переданные аргументы в том порядке, в котором они были даны.

# hello.rb
name = ARGV[0] || "World"
puts "Привет, #{name}!"

# Запустить с: ruby hello.rb Alice
# Вывод: Привет, Alice!

Для обработки нескольких аргументов:

# greet.rb
name, time_of_day = ARGV
puts "Добрый #{time_of_day || 'день'}, #{name || 'там'}!"

# Запустить с: ruby greet.rb Bob Morning
# Вывод: Доброе утро, Bob!

Создайте опции с помощью цикла:

# options.rb
options = {}
ARGV.each do |arg|
  key, value = arg.split('=')
  options[key.to_sym] = value
end
p options

# Запустить с: ruby options.rb name=Tom age=30
# Вывод: {:name=>"Tom", :age=>"30"}

Глубокое погружение

Чтение аргументов командной строки - практика такая же старая, как сами интерфейсы командной строки. Речь идет о использовании пользовательского ввода без графического интерфейса - это важно для автоматизации или выполнения скриптов на серверах.

ARGV в Ruby - это не уникальность; многие языки имеют что-то подобное. Тем не менее, реализация в Ruby делает ставку на простоту и ясную синтаксис - без лишних хлопот, просто массив.

Под поверхностью, ARGV - это просто экземпляр Array, предварительно заполненный аргументами, которые появляются после имени скрипта в вызове команды. Ruby настраивает его до начала выполнения вашего кода, делая его сразу готовым к использованию.

Альтернативы? Конечно. Для сложных нужд, таких как разбор флагов (например, --verbose или -v), в Ruby есть класс OptionParser в стандартной библиотеке. Это может справляться с более широкими задачами, чем ARGV, такими как значения по умолчанию, автоматическое преобразование типов и генерация сообщений справки.

Иногда вы просто хотите знать, был ли предоставлен аргумент или нет, не обращая внимания на его значение. Для этого подходит ARGV.include?.

Смотрите также