OptionParser
Rubyでクラスを使用しようとしているようです。これはコア ライブラリの一部ではないため、プログラムの先頭に次を含めるようにしてください。
require 'optparse'
さらに、オプションを正しく作成していることを確認してください。
options = {}
optparse = OptionParser.new do |opts|
options[:config_file] = nil
opts.on('-f', '--config-file', 'Enter the config file to open.') do
options[:dry_run] = true
end
end
optparse.parse!
コマンドラインでフラグを使用する場合、基本的に変数をtrue
またはに設定していますfalse
。たとえば、デフォルトでは、-v
(verbose) はfalse
ほとんどの操作 ( などrm
) に対して に設定されています。コマンドとそのオプションのフラグに続くのは、(場合によっては必要な)コマンドライン引数です。これは、この場合のファイル名です。
スクリプトの呼び出しは次のようになります
$ ruby ./my_program.rb --config-file /path/to/some/file
^ ^ ^
program flag argument
ご覧のとおり、optparse オプションはブール値でなければなりません。フラグが存在する場合にのみファイルを開きたい (オプションが true)。プログラムを実行するには、わずかな変更が必要です。
if options[:config_file]
File.new(ARGV[0], 'r').each { |params| puts params }
end
ARGV
スクリプトへのすべてのコマンドライン引数の配列です (フラグに続きます)。引数を 1 つだけ含める場合は、最初の要素、つまりインデックス 0 ( ARGV[0]
) が必要になります。すべての引数はスペースで区切ります。したがって、同じ手法を に実装するとoptions[:host_file]
、 を使用できますARGV[1]
。