コマンドライン引数の解析

警告:高齢者にとって、この記事は有用ではないでしょう。 そして、それでさえ有害であることが判明します。 rubyを使用してスクリプトを記述するシステム管理者を強くお勧めします。

コマンドライン引数の解析には、通常GetOptライブラリを使用しました。 これはかなり不便なライブラリであり、 Docoptを偶然見つけうれしく思いました。

スタート。


使用を開始するのは非常に簡単です。出力行を解析するようスクリプトに教えるには、最初にライブラリを接続する必要があります。

require 'docopt' 

その後、変数を初期化して適切な値を割り当てることができます。

 doc =<<EOF Usage: #{__FILE__} add <opt1> <opt2> –input=<something> –verbose <p>Option: -h –help    –cat   –input=<something>   [default: my.txt] EOF 

ここで、変数をパラメーターとして渡すだけです。

 begin arguments = Docopt::docopt(doc) rescue Docopt::Exit => e puts e.message exit end 

引数が指定されていない場合、または-hまたは-helpスイッチを使用してスクリプトが呼び出された場合 、入力したメッセージが表示されます。
他の場合では、ライブラリ自体がdoc変数から文字列を解析し、すべてをハッシュに入れます。これは既にarguments変数に割り当てられています。

 ~/myscript add test argument2 --input=local.txt {"add"=>true, "<opt1>"=>"test", "<opt2>"=>"argument2", "--input"=>"local.txt", "--verbose"=>false, "--help"=>false} 

ご覧のとおり、データは便利なハッシュに配置されており、標準のメカニズムを使用してそこから収集できます。

 puts arguments["<opt1>"] puts arguments["--input"] 


このライブラリを使用すると、オプションの厳密に必要なパラメーターを使用できます。 必須は括弧()で示され、オプションは四角[]

とりわけ、 Usage行の下にリストすることにより、いくつかの使用基準を導入できます

 Usage: #{__FILE__} add <opt1> <opt2> --input=<something> --verbose #{__FILE__} del --input=<something> --sure 

Options:行の下で変数のデフォルト値を設定することもできます:

 --input=<something>   [default: my.txt] 

引数[ -input ]ハッシュの値は、特に指定がない限り、my.txtと等しくなります。

トラブルなし-入力を読み取るには、$ stdinチャネルを明示的に使用する必要があります

 $stdin.gets.chomp 


終わり


実際、これがこのライブラリについて知っておくべきすべてです。

Source: https://habr.com/ru/post/J183654/


All Articles