getopt, getopts or manual parsing - what to use when I want to support both short and long options?

view story

http://unix.stackexchange.com – Currently I'm writing a Bash script which has the following requirements: it should run on a wide variety of Unix/Linux platforms it should support both short and (GNU) long options I know that getopts would be the preferred way in terms of portability but AFAIK it doesn't support long options. getopt supports long options but the BashGuide recommends strongly against it: Never use getopt(1). getopt cannot handle empty arguments strings, or arguments with embedded whitespace. Please forget that it ever existed. So, there still is the option of manual parsing. This is error-prone (HowTos)