Когда вы хотите использовать аргументы командной строки, вы обычно сначала проверяете, достаточно ли передано аргументов (проверяя ARGV.length
), затем обращаетесь к аргументам в массиве ARGV
, присваивая их некоторым переменным с описательным именем, и, наконец, выполняете некоторые работают с этими переменными.
Например, у вас есть программа, которая добавляет два числа (add.rb
):
# Check if there are at least two command line arguments passed to the program
if ARGV.length < 2
puts "Two arguments are required."
puts "USAGE: ruby #{File.basename(__FILE__)} FIRST_NUMBER SECOND_NUMBER"
exit
end
# Assign command line arguments to descriptively named variables
firstNum = ARGV[0].to_i
secondNum = ARGV[1].to_i
# Perform some work
sum = firstNum + secondNum
puts "#{firstNum} + #{secondNum} = #{sum}"
Вы можете запустить ее следующим образом:
$ ruby add.rb 2 5
2 + 5 = 7
Вы заметили, что можете передавать не целые числа в эту программу, и она потерпит неудачу. Чтобы исправить это, вы можете добавить некоторые логи проверки c, например:
if ARGV[0] =~ /^[0-9]+$/
puts "First argument should be an integer"
exit
end
Это может быть решением, но, скорее всего, вы будете реализовывать что-то, что уже было реализовано (например, проверка, является ли строка целое число), вы рискуете, что ваша проверка может не работать с некоторыми крайними случаями, и вы делаете свою программу слишком сложной. В тех случаях, когда ваша логика обработки аргументов командной строки c становится немного больше, чем вы действительно хотите иметь дело, вы должны использовать либо OptionParser
из стандартной библиотеки ruby, либо некоторые -standard библиотека анализа параметров командной строки .