8

私はルビーをよく知りませんが、同僚が書いたこのスクリプトにいくつかの機能を追加しようとしています。

基本的に現在、入力としていくつかのフラグと標準を取り、OptionParserを使用してフラグを解析します。

OptionParserを使用して、catと同様のコマンドライン引数の選択を解析したいと思います。だから私の質問は、OptionParserを使用して猫の一部をルビーで解析するコマンドラインオプションをどのように書くかということだと思います

cat [OPTION]... [FILE]...

それが理にかなっていることを願って、どんな助けでもありがたいです。

4

1 に答える 1

9
OPTS = {}

op = OptionParser.new do |x|
    x.banner = 'cat <options> <file>'      
    x.separator ''

    x.on("-A", "--show-all", "Equivalent to -vET")               
        { OPTS[:showall] = true }      

    x.on("-b", "--number-nonblank", "number nonempty output lines") 
        { OPTS[:number_nonblank] = true }      

    x.on("-x", "--start-from NUM", Integer, "Start numbering from NUM")        
        { |n| OPTS[:start_num] = n }

    x.on("-h", "--help", "Show this message") 
        { puts op;  exit }

end

op.parse!(ARGV)

# Example code for dealing with filenames
ARGV.each{ |fn| output_file(OPTS, fn) }

彼らが言うように、他のコマンド ライン操作は、読者の演習として残しておきます。あなたはアイデアを得る。

(注: フラグの後に値を渡すデモを行うために、架空の -x パラメーターを発明する必要がありました。)

更新: ユーザーがファイル名を入力したと仮定すると、これにより ARGV がファイル名の配列として残ることを説明する必要がありました。

于 2010-03-02T17:22:40.370 に答える