other versions
other sections
GETOPT(1) | GETOPT(1) |
名前¶
getopt - コマンドの引き数を解析する (拡張版)書式¶
getopt optstring parameters説明¶
getopt は、シェル手続きで簡単に解析できるように、 コマンドラインのオプションを分解 (解析) するために使われる。 また、正しいオプションであるかを調べるためにも使われる。 これを行うために GNU getopt(3) ルーチンが使われる。オプション¶
- -a, --alternative
- 長いオプションを 1 個の `-' で始めることができるようにする。
- -h, --help
- ちょっとした使用ガイドを表示し、正常終了する。 それ以上は何も出力されない。
- -l, --longoptions longopts
- 認識させる長い (複数文字の) オプションを指定する。 2 つ以上のオプション名をコンマで区切って一度に指定できる。 このオプションは 2 回以上指定することができる。 longopts は交換可能である。 longopts で指定されている長いオプション名の後に、1 個のコロンを続けることができる。 これは、そのオプションに引き数が必須であることを示す。 また、長いオプション名の後に 2 個のコロンを続けることもできる。 これは、そのオプションが引き数を取る場合もあることを示す。
- -n, --name progname
- エラーが報告された場合に getopt(3) ルーチンが使うプログラム名。 このオプションを指定しても、 getopt(1) のエラーは getopt から発生したものとして表示される点に注意すること。
- -o, --options shortopts
- 認識させる短い (1 文字の) オプションを指定する。 このオプションが指定されていない場合、 getopt の 1 個の `-' で始まっていない最初のパラメータ (かつ、オプションの引き数でないもの) が 短いオプションの文字列として使われる。 shortopts に指定されている短いオプション文字の後に、1 個のコロンを続けることができる。 これは、そのオプションに引き数が必須であることを示す。 また、長いオプション名の後に 2 個のコロンを続けることもできる。 これは、そのオプションが引き数を取る場合もあることを示す。 オプションの解析法と出力の生成法を変更するために、 shortopts の最初の文字を `+' または `-' にすることができる (詳細は 「スキャンモード」 セクションを参照すること)。
- -q, --quiet
- getopt(3) によるエラー表示をさせない。
- -Q, --quiet-output
- 通常の出力を生成させない。 -q を指定しない限り、 getopt(3) によってエラーが表示される。
- -s, --shell shell
- 指定したシェルのクォート方法に設定する。 -s オプションが指定されていない場合、 BASH でのクォート方法が使われる。 指定可能な引き数は、現在のところ `sh', `bash', `csh', `tcsh' である。
- -u, --unquoted
- 出力をクォートしない。 空白と (シェル依存の) 特殊文字は、(他の getopt(1) の実装と同じように) このモードでは大混乱を引き起こす。
- -T --test
- getopt(1) が拡張バージョンか古いバージョンかをテストする。 何も出力しないが、エラーステータスを 4 に設定する。 他の getopt(1) の実装の場合や、このバージョンで環境変数 GETOPT_COMPATIBLE が設定されている場合、 `--' を返し、エラーステータスを 0 に設定する。
- -V, --version
- バージョン情報を出力し、正常終了する。 それ以上は何も出力されない。
解析¶
このセクションでは getopt のパラメータの第 2 部分 (「書式」 セクションの parameters) のフォーマットについて説明している。 次のセクション (出力) では生成される出力について説明している。 これらのパラメータは、一般に、シェル関数が呼ばれたときのパラメータである。 シェル関数が呼ばれたときの各パラメータが getopt のパラメータリストにある 1 つのパラメータに 厳密に対応している点に注意しなければならない (「例」 セクションを参照すること)。 全ての解析が GNU getopt(3) ルーチンで行われる。出力¶
出力は前のセクションで説明した各要素に対して生成される。 出力は要素が入力で指定された順番で生成される。 ただし、オプションではないパラメータは例外である。 出力は 互換 (クォートされない) モードで生成することができる。 また、引き数とオプションではないパラメータに含まれる空白と他の特殊文字を 保護するモードで出力することもできる (「クォート」 セクションを参照すること)。 出力がシェルスクリプトで処理される場合、 その出力は別々の要素から構成されているようにみえる。 この要素は (大部分のシェル言語では shift コマンドを使って) 1 つ 1 つ処理できる。 この動作はクォートされないモードでは不完全である。 なぜなら、要素に空白や特殊文字があった場合、 要素が期待していない箇所で分割されてしまうからである。 必須とされる引き数が見つからない、またはオプションが認識されない、 といった原因でパラメータ解析に問題がある場合、 標準エラーにエラーが表示される。 このとき、不正な要素に対しては何も出力されず、 0 でないエラーステータスが返される。クォート¶
互換モードでは、引き数やオプションではないパラメータにある 空白や「特殊」文字は正しく扱われない。 この出力はシェルスクリプトに与えられるので、 スクリプトは、出力をどのようにして個々のパラメータに 分割すべきなのかを知らない。 この問題を回避するため、この実装ではクォート機能を提供する。 これは、各パラメータをクォートして出力を生成する、という手法を取る。 この出力がもう一度シェル (通常はシェルの eval コマンド) に与えられた場合、 出力は個々のパラメータに正しく分割される。スキャンモード¶
特殊なスキャンモードであることを示すために、 短いオプションの最初の文字を `-' または `+' にすることができる。 「書式」 セクションの最初の呼び出し形式が使われた場合、これは無視される。 しかし、環境変数 POSIXLY_CORRECT が指定されているかどうかは調べられる。互換性¶
このバージョンの getopt(1) は、出来るだけ他のバージョンと互換性があるように書かれた。 通常は他のバージョンを修正することなく、 このバージョンに置き換えることができる。 更に、いくつかの利点がある。リターンコード¶
解析に成功した場合、 getopt はエラーコード 0 を返す。 getopt(3) がエラーを返した場合は 1 を返す。 パラメータが理解できなかった場合は 2 を返す。 メモリが足りない (out-of-memory) といった内部エラーの場合は 3 を返す。 -T オプションを付けて呼び出された場合は 4 を返す。例¶
(ba)sh と (t)csh での使用例のスクリプトは、 getopt(1) ディストリビューションで提供されている。 これらはオプションとして /usr/local/lib/getopt または /usr/lib/getopt にインストールされている。環境変数¶
- POSIXLY_CORRECT
- この環境変数は getopt(3) ルーチンで調べられる。 これが設定されている場合、パラメータがオプションまたは オプション引き数でないと分かった時点で解析は停止する。 それ以降の全てのパラメータは、 `-' で始まっているかどうかに関係なく、 オプションではないパラメータとして解釈される。
- GETOPT_COMPATIBLE
- getopt に対して強制的に 「書式」 セクションの最初の呼び出し形式を使わせる。
バグ¶
getopt(3) は、引き数を取っても取らなくてもよい長いオプションを解析できる (ただし、短いオプションの場合は解析できない)。 この getopt(1) は、オプション引き数が指定されていない場合、それが存在しないものとして扱う。著者¶
Frodo Looijaard <frodol@dds.nl>関連項目¶
getopt(3), bash(1), tcsh(1).May 31, 1997 | Linux |