GETOPT(1)

名称
getopt - コマンドの引数を解析する

書式
set -- `getopt optstring $*`

解説
getopt は shell 上でコマンドラインのオプションを調べやすくするために、 そのコマンドラインを分解するのに使われ、正当なオプションかどうか 調べるために利用されます。 [optstring] は決められたオプション文字 (getopt(3) 参照) の並びで、 もし文字の直後にコロン (``:'') がある場合、そのオプションは引数を取る ことを期待されます。オプションとその引数の間はスペースが空いていても いなくても構いません。特殊なオプション “--” は、オプションの最後を定めるために使われます。 getopt は、特殊なオプション “--” を明示的に使用している場合はそれを認識しますが、そうでない場合はこれを オプション列の最後に付加します。シェル引数 ($1 $2 ...) は、各オプションの前に “-” をつけたものが格納されて、リセットされます。 各オプションの引数もまたシェル引数に含まれます。

使用例
以下のコードは オプション [a] と [b] 、および引数を必要とするオプション [o] を持つコマンドがどのようにすれば引数を処理できるかという例を示しています。

    set -- `getopt abo: $*`
    if test $? != 0
    then
            echo 'Usage: ...'
            exit 2
    fi
    for i
    do
            case "$i"
            in
                    -a|-b)
                            flag=$i; shift;;
                    -o)
                            oarg=$2; shift; shift;;
                    --)
                            shift; break;;
            esac
    done

このコードでは以下のコマンドの全てを受け付けます。

    cmd -aoarg file file
    cmd -a -o arg file file
    cmd -oarg -a file file
    cmd -a -oarg -- file file

関連項目
sh(1), getopt(3)