如何在脚本中使用命令选项?
我有一个连接到设备的脚本,运行命令并打印输出。我想为主机使用一个文件,为用户和passwd信息使用一个文件。当我尝试运行脚本时,我收到了以下错误:
ruby threat_detection.rb --host_file=hosts --config_file=config
threat_detection.rb:61:in '<main>': needless argument: --host_file=hosts (OptionParser::NeedlessArgument)
ruby threat_detection.rb '--host_file=hosts' '--config_file=config'
threat_detection.rb:61:in '<main>': needless argument: --host_file=hosts (OptionParser::NeedlessArgument)
ruby threat_detection.rb --host_file-hosts --config_file-config
threat_detection.rb:61:in '<main>': invalid option: --host_file-hosts (OptionParser::InvalidOption)
这是代码:
options ={}
opt_parser = OptionParser.new do |opt|
opt.banner = 'Usage: opt_parser COMMAND [OPTIONS]'
opt.on('--host_file', 'I need hosts, put them here') do |host_file|
options[:host_file] == host_file
end
opt.on('--config_file', 'I need config info, put it here') do |config_file|
options[:config_file] == config_file
end
opt.on('-h', '--help', 'What your looking at') do |help|
options[:help] == help
puts opt
end
end
opt_parser.parse!
如何阅读这些选项?这是我的猜测(基于python经验)。我现在正在寻找它来打印线条:
if :config_file == true
File.open(:config_file, r) do |params|
puts params
end
end
if :host_file == true
File.open(:host_file, r) do |host|
put host
end
end
答案 0 :(得分:3)
要获取参数,您需要使用以下格式
"--switch=MANDATORY" or "--switch MANDATORY" # mandatory argument
"--switch[=OPTIONAL]" # optional argument
"--switch" # no argument
您当前正在使用第三种格式,该格式被解释为不带参数。你应该使用第一个或第二个。
另外值得注意的是,当标志位于
时,您可能希望进行分配而不是进行比较你想要这个
options[:host_file] = host_file
不是这个
options[:host_file] == host_file