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
シェルに組み込まれているので、$@
直接引用できます。また、シェル変数OPTARG
とOPTIND
。 (関数内では、関数getopts
はグローバルパラメータの代わりに参照されます。繰り返し可能な(等価性)関数呼び出しが必要な場合は$@
ローカライズする必要があります。)OPTIND
概要(緑)は次のとおりです。
getopts optstring name [arg ...]
そして説明はこうです。
getopts
位置パラメータを解析するためにシェルプログラムによって使用されます。optstring
認識するオプション文字が含まれています。文字の後にコロンが続く場合、オプションには引数が必要で、スペースで区切る必要があります。
(少なくとも)bash
文書(man bash
)には次のように記載されています。
getopts
位置引数は通常構文解析されますが、より多くの引数が arg 値で指定された場合、その引数は解析されgetopts
ます。
引用する