Am 15.09.2019 um 22:38 schrieb Eduardo Bustamante: > On Sun, Sep 15, 2019 at 12:58 PM Roland Illig <roland.il...@gmx.de> wrote: >> >> The help text of getopts says: >> >>> Getopts normally parses the positional parameters ($0 - $9), but if >>> more arguments are given, they are parsed instead. > (...) >> The "instead" in "they are parsed instead" is totally wrong. $1 to $9 >> are always parsed, no matter if there are more than 10 positional >> parameters or not. > > It's not wrong.
Ok, maybe not strictly wrong, but still misleading. In my first try to read the documentation, and I really did read with good intentions, I thought the "more" would refer to the "more than $9", and with that interpretation in mind, the "instead" is clearly wrong. >> $ getopts >> getopts: usage: getopts optstring name [arg] > > It's referring to the fact that you can explicitly pass a set of > parameters to `getopts' (i.e. the `[arg]' part), instead of it using > the script's positional parameters (i.e. $@). $@ also doesn't include $0. What does $0 have to do with getopts? In my opinion, the help should read like this: getopts: getopts optstring name [args] Parse option arguments. ... If ARGS are given, they are parsed. Otherwise the usual positional parameters $@ are parsed instead. The changes are that "arg" is renamed to "args", and it is referred to unambiguously by saying ARGS in the main text. I also left out the word "more" since it was the main source of my confusion. In other parts of the help, repeated arguments are written as [ARG ...] instead of [ARGS]. For consistency, the same pattern could be used here as well. In that case, the text should be "If ARGs are given, ...". Roland