こんにちは。
シェルクリプトのオプション引数解析方法として、GNU getopt を用いた補助(preprocessing)+ 実際の解析(while-case-shift のループ)を行う方法が定番の一つのようです(特に long option を使う場合)。
GNU getopt によるpreprocessingの利点
GNU getopt の利点について考察しました。
- long option を前方最短一致で解決可能です1。
- ただし完全一致ではなく意図しない危険が生じます(例:--drop は、--d や --dr と指定しても有効となる)。
- 順不同に並べた option と positional argument を解析可能です。
私の感想
GNU getopt の上記利点が不要ならば、while-case-shift のループだけで初等的にオプション解析する方が良いでしょう2。
そうだとすると getopt を学んだり教えたりすることも不要かもしれません。
-
もしかすると、GNU getopt が作られた理由は、昔は long option を前方最短一致で解決することが愛好されたからかもしれません。 ↩
-
参考例:「オプション引数解析を行うシェルスクリプトコードを生成」 ↩