シェルスクリプトでgetoptsを使ったことなかったので調べてみた
> Source: Qiita_Trend
Execute Primary Source
// Problem
シェルスクリプトにおいて、コマンドライン引数を手動で解析しようとすると、位置パラメータの処理が煩雑になり、エラーハンドリングやオプションの柔軟な指定が困難になるという課題がある。
// Approach
Bash組み込みの`getopts`を活用し、`optstring`内のコロン配置によって引数の要否を制御する手法を提示。さらに、`optstring`の先頭にコロンを付与することで、標準エラー出力を抑制し、`case`文を用いた独自の例外処理を実現するアプローチを取っている。
// Result
引数を持つオプション、引数を持たないフラグ、および不正なオプションに対するエラーハンドリングを、`getopts`を用いて適切に実装できることを確認した。これにより、より堅牢でユーザーフレンドリーなシェルスクリプトの作成が可能となる。
Senior Engineer Insight
> 本記事は、`getopts`の基本動作に加え、エラーハンドリングにおける`optstring`の制御という、実務で直面しがちな細部を的確に捉えている。小規模な運用スクリプトや自動化タスクにおいては、外部依存を排除しつつ標準機能で完結できるため、極めて合理的である。しかし、大規模なシステムや複雑なCLIツールを構築する場合、`getopts`は一文字オプションに限定されるため、ロングオプションのサポートや高度な型検証には限界がある。現場では、スクリプトの規模に応じて、Bashの標準機能か、より高機能な言語による実装かを明確に判断すべきである。