独自のオプション解析
解析できるオプションのコマンド例
1 |
./script.sh 'arg' --aopt -b 'bopt_arg' |
例えば、case文を用いてコマンドライン引数を解析していきます。完全な柔軟性やカスタマイズ性を持つことができ、特定のプロジェクトやニーズに合わせてオプションの処理を調整できます。
欠点としては、複雑なオプションを実装するとコードが複雑なものになる可能性があります。また、独自の解析方法を用いると一貫性を保つのが難しくなり、保守性に影響が出る可能性があります。
getoptsコマンドを利用したオプション解析
解析できるオプションのコマンド例
1 |
./script.sh -abc 'copt_arg' 'arg' |
getoptsコマンドを利用したオプション解析の方法になります。特徴として、オプションをコマンドライン引数の前半に記述し、一文字のオプションを利用したシェルスクリプトが作成できます。解析できるオプションに制限があるため、簡潔なコードが書きやすいものになります。また、getoptsコマンドはbashではビルトインコマンド(組み込みコマンド)のため、コマンド自体は何も依存せずに利用できます。反面として、ロングオプションの解析を行うには別の方法を検討する必要があります。
getoptコマンドを利用したオプション解析
解析できるオプションのコマンド例
1 |
./script.sh -abc 'copt_arg' --verbose 'arg' |
getoptコマンドを利用したオプション解析の方法になります。Cのgetopt関数によく似た機能を持つコマンドになり、ショートオプションとロングオプションの両方に対応でき、POSIX規格のオプションを実装しやすいものになります。getoptコマンドは基本的に標準でインストールされている場合が多いと思いますが、外部ツールに依存していることに注意が必要になることがあるかもしれません。
環境変数を用いたプログラムの制御
解析できるコマンド例
1 |
VERBOSE=1 ./script.sh |
または
1 2 |
export VERBOSE=1 ./script.sh |
オプションとは異なりますが、環境変数を用いることでプログラムの制御を変えることができます。ただし、環境変数は他のプログラムにも影響が出る可能性があります。この特徴をメリットとらえるかデメリットとしてとらえるかは要件によるところになるでしょう。
よく使われる共通のオプション
仕様とかで決められているわけではありませんが、よく使われるコマンドのオプションは参考にされて、同じ名前のオプションとして実装されることがよくあります。