Command Line Arguments in Ruby language
As the name itself says, Command line arguments, you can assume pretty correctly that these might be the arguments you pass while running your Ruby programs, similar to how we pass arguments to a method.
$ ruby languages.rb Ruby C Python JavaScript
Where
ruby languages.rbis the way to run the Ruby programRuby C Python JavaScriptare four different arguments passed to it
| This concept forms the basis in writing Command Line Interface(CLI) applications. |
Varying the number of arguments (ARGV Array)
ARGV stands for ARGument Vector which is a one-dimensional Array.
It contains the full list of arguments in the order as passed as arguments.
| All the arguments are as a string. If you are passing a numeric value then it need to be converted. |
Key points to remember
ARGVis an array which contains all the argument passed while running a Ruby program.- You can use the
ARGV.lengthmethod to find the number of arguments passed. - You can use the
ARGV.eachmethod to iterate over the list of arguments and then perform operations on each argument.- Indeed, any of the methods that you can use for an instance of
Arrayyou can use forARGV.
- Indeed, any of the methods that you can use for an instance of
- You can use the
__FILE__pseudo variable to access the file name from Ruby program. See Ruby Pseudo Variables.
Example
Create a file named languages.rb and type following lines.
puts "File name is: #{__FILE__}"
puts "Total arguments length: #{ARGV.length}"
puts "Arguments are:"
ARGV.each do |arg|
puts "- {arg}"
end
And, run languages.rb as:
$ ruby cmd.rb Ruby C Python JavaScript
The output is:
File name is: languages.rb
Total arguments length: 4
Arguments are:
- Ruby
- C
- Python
- JavaScript
Exercises
- Write a command line program to check whether a given number is even or odd.
Create a file named cmd_even_odd.rb.
number = ARGV[0] # store into meaningful variable
number = number.to_i # convert the numeric string into integer
puts "Checking whether number #{number} is even or odd."
answer = if number.even?
"even."
else
"odd."
end
puts "number is #{answer}."
Run the program as:
$ ruby cmd_even_odd.rb 10
Checking whether number 10 is even or odd.
10 is even.
$ ruby cmd_even_odd.rb 5
Checking whether number 5 is even or odd.
5 is odd.
- Write a command line program to display your name, phone and age. If age is above 16 then print message as “You are an adult now.
Create file named info.rb.
name, phone, age = ARGV[0], ARGV[1], ARGV[2]
age = age.to_i
puts "Name is #{name}."
puts "Phone is #{phone}."
answer =
if age > 16
"You are an adult now."
else
"You are yet to become adult."
end
puts answer
Run the program as:
$ ruby info.rb Foo 1213131 17
# output:
Name is Foo.
Phone is 1213131.
You are an adult now.