Why does getopts only work the first time?
Solution 1:
You need to add this line at top of your function:
OPTIND=1
Otherwise successive invocation of the function in shell are not resetting this back since function is being run in the same shell every time.
As per help getopts
:
Each time it is invoked,
getopts
will place the next option in the shell variable$name
, initializing name if it does not exist, and the index of the next argument to be processed into the shell variableOPTIND
.OPTIND
is initialized to1
each time the shell or a shell script is invoked.