bash getoptsはどのパラメータが呼び出されるのかをどうやって知ることができますか?

bash getoptsはどのパラメータが呼び出されるのかをどうやって知ることができますか?

getoptsそれがbash関数であれば、私が理解したところによると、関数が続行するためにどんな引数があるのか​​を知るように引数全体を渡さなければなりません$@。そうですか?getopts

私は見るのに必要ではないようですが、getopts現在の範囲にどのパラメータがあるのか​​をどうやって知ることができますか?他の高級言語と同様に、以前の呼び出しを追跡する方法はありますか?

while getopts abcde opt; do
              ˄˄˄˄˄ <-- you only need to pass the argument labels here, 
                        how getopts knows what arguments I have
    case $opt in
        ...
    esac
done

答え1

getoptsシェルに組み込まれているので、$@直接引用できます。また、シェル変数OPTARGOPTIND。 (関数内では、関数getoptsはグローバルパラメータの代わりに参照されます。繰り返し可能な(等価性)関数呼び出しが必要な場合は$@ローカライズする必要があります。)OPTIND

概要(緑)は次のとおりです。

getopts optstring name [arg ...]

そして説明はこうです。

getopts 位置パラメータを解析するためにシェルプログラムによって使用されます。optstring認識するオプション文字が含まれています。文字の後にコロンが続く場合、オプションには引数が必要で、スペースで区切る必要があります。

(少なくとも)bash文書(man bash)には次のように記載されています。

getopts位置引数は通常構文解析されますが、より多くの引数が arg 値で指定された場合、その引数は解析されgetoptsます。

引用する

関連情報