ARGV*
是 Ruby 语言中的一个特殊数组,用于接收从命令行传递给脚本的参数。ARGV[0]
是第一个参数,ARGV[1]
是第二个参数,以此类推。如果没有传递任何参数,ARGV
将是一个空数组。
以下是一个简单的 Ruby 脚本示例,演示了如何使用 ARGV
:
# script.rb
puts "Script name: #{$0}"
puts "Number of arguments: #{ARGV.size}"
ARGV.each_with_index do |arg, index|
puts "Argument #{index}: #{arg}"
end
命令行参数在多种场景下非常有用,例如:
假设你有一个脚本 backup.rb
,它可以根据命令行参数来决定备份哪个目录:
# backup.rb
require 'fileutils'
if ARGV.empty?
puts "Usage: ruby backup.rb <directory>"
exit
end
directory = ARGV[0]
if File.exist?(directory)
FileUtils.cp_r(directory, "#{directory}_backup")
puts "Backup created for #{directory}"
else
puts "Directory #{directory} does not exist."
end
运行这个脚本并传递一个目录作为参数:
ruby backup.rb /path/to/directory
解决方法:
if ARGV.empty?
puts "Usage: ruby script.rb <required_argument>"
exit(1)
end
解决方法:
expected_args = 2
if ARGV.size != expected_args
puts "Usage: ruby script.rb <arg1> <arg2>"
exit(1)
end
解决方法:
if ARGV.size > 0
directory = ARGV[0]
unless File.directory?(directory)
puts "Error: #{directory} is not a valid directory."
exit(1)
end
end
通过这些方法,你可以有效地使用 ARGV*
来处理命令行参数,并确保脚本的健壮性和可用性。
领取专属 10元无门槛券
手把手带您无忧上云