An attempt at summarizing the right way to use POSIX-compliant
A couple links:
First, there has been much blood spilled discussing how to support optional arguments using
getopts – the correct solution is to not do that, as explained in Guideline 7 here. So we won't.
And, second, if the optstring handed to getopts starts with a colon, then getopts uses what is called “silent error reporting”; this appears to be the recommended approach, so we'll stick with that. In short, don't do this:
while getopts ab:c: opt ; do
Do this (note the leading colon):
while getopts :ab:c: opt ; do
... coming soon ...